《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode

2024-03-18 7405阅读

《剑指Offer》笔记&题解&思路&技巧&优化_Part_1

  • 😍😍😍 相知
  • 🙌🙌🙌 相识
  • 😢😢😢 开始刷题
    • 1. LCR 120. 寻找文件副本——数组中重复元素
    • 2. LCR 121. 寻找目标值 - 二维数组——二维数组中查找
    • 3. LCR 122. 路径加密——替换空格
    • 4. LCR 123. 图书整理 I——从尾到头打印链表
    • 5. LCR 124. 推理二叉树——重建二叉树
    • 6. LCR 125. 图书整理 II——用两个栈实现队列
    • 7. LCR 126. 斐波那契数——斐波那契数列
    • 8. LCR 127. 跳跃训练——青蛙跳台阶问题
    • 9. LCR 128. 库管理 I——旋转数组的最小值

      《剑指Offer》笔记&题解&思路&技巧&优化 Java版本——新版leetcode 第1张

      😍😍😍 相知

      当你踏入计算机科学的大门,或许会感到一片新奇而陌生的领域,尤其是对于那些非科班出身的学子而言。作为一位非科班研二学生,我深知学习的道路可能会充满挑战,让我们愿意迎接这段充满可能性的旅程。

      最近,我开始了学习《剑指Offer》和Java编程的探索之旅。这不仅是一次对计算机科学的深入了解,更是对自己学术生涯的一次扩展。或许,这一切刚刚开始,但我深信,通过努力与坚持,我能够逐渐驾驭这门技艺。

      在这个博客中,我将深入剖析《剑指Offer》中的问题,并结合Java编程语言进行解析。

      让我们一起踏上这段学习之旅,共同奋斗,共同成长。无论你是已经驾轻就熟的Java高手,还是像我一样初出茅庐的学子,我们都能在这里找到彼此的支持与激励。让我们携手前行,共同迎接知识的挑战,为自己的未来打下坚实的基石。

      (得了!看吧!一起学习、一起努力!!!)

      LeetCode估计版权原因,把剑指Offer系列题都下降了,估计大家根据题目是找不到了,但是LeetCode其实是换汤不换药,把剑指offer的题目和描述改了一下而已,其他的依然不变。按照我的标题继续冲!

      🙌🙌🙌 相识

      根据题型可将其分为这样几种类型:

      1. 结构概念类(数组,链表,栈,堆,队列,树)
      2. 搜索遍历类(深度优先搜索,广度优先搜索,二分遍历)
      3. 双指针定位类(快慢指针,指针碰撞,滑动窗口)
      4. 排序类(快速排序,归并排序)
      5. 数学推理类(动态规划,数学)

      😢😢😢 开始刷题

      1. LCR 120. 寻找文件副本——数组中重复元素

      题目跳转:https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/description


      • 这道题在原书上绝对不是简单级别啊!
      • 它考察的是程序员的沟通能力,先问面试官要时间/空间需求!
        • 只是时间优先就用哈希表 时间: O ( n ) O(n) O(n) 空间 O ( n ) O(n) O(n)

          class Solution {
              public int findRepeatDocument(int[] documents) {
                  // 定义数据结构
                  Map hashmap =  new HashMap();
                  // 遍历
                  for(int temp :documents){
                      if(hashmap.containsKey(temp))return temp;     
                      else hashmap.put(temp,1);
                  }
                  return 0;
              }
          }
          
        • 还有空间要求,就用指针+原地排序数组 时间: O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n)) 空间 O ( 1 ) O(1) O(1)

          class Solution {
              public int findRepeatDocument(int[] documents) {
                  Arrays.sort(documents);
                  for(int i = 0;i
                      if(documents[i]!=documents[i+1])continue;
                      else return documents[i];
                  }
                  return 0;
              }
          }
          
              public int findRepeatDocument(int[] documents) {
                  for(int i = 0;i
                      while(documents[i]!=i){
                          if(documents[i]==documents[documents[i]])return documents[i];
                          int k = documents[documents[i]];
                          documents[documents[i]] = documents[i];
                          documents[i] = k;
                      }
                  }
                  return 0;
              }
          }
          
              public int firstMissingPositive(int[] nums) {
                  for(int i = 0;i 

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]