文章目录

  • 前言
  • 一、环形链表||(力扣142)
  • 二、寻找重复数(力扣287)
  • 三、缺失的第一个正数(力扣41)
  • 每日一题day73:等差子数组(力扣1630)

前言

1、等差子数组
2、寻找重复数
3、缺失的第一个正数
4、等差子数组


一、环形链表||(力扣142)


分析:
快慢指针 快指针一直一次走两步 慢指针一次走一步
先判断是否有环 快慢指针是否会相等
在有环的基础上,去找入口位置

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while(fast!=null && fast.next!=null){//先判断是否有环slow = slow.next;fast = fast.next.next;if(slow==fast){//有环ListNode index1 = fast;ListNode index2 = head;//找入口 while(index1!=index2){index1 = index1.next;index2 = index2.next;}return index1;}}return null;}
}

二、寻找重复数(力扣287)


分析:将其转化为环形链表||
大佬题解

class Solution {public int findDuplicate(int[] nums) {int res = 0;int slow = 0;int fast = 0;slow = nums[slow];fast = nums[nums[fast]];//由题意得一定会出现环while(slow!=fast){slow = nums[slow];fast = nums[nums[fast]];}//此时slow和fast相遇//寻找相遇的入口int index1 = 0;int index2 = slow;while(index1!=index2){index1 = nums[index1];index2 = nums[index2];}res = index1;return res;}
}

三、缺失的第一个正数(力扣41)


分析:

如果没有额外的时空复杂度要求,那么就很容易实现:
将数组所有的数放入哈希表,随后从 1开始依次枚举正整数,并判断其是否在哈希表中;
我们可以从 1 开始依次枚举正整数,并遍历数组,判断其是否在数组中。
如果数组的长度为 N,那么第一种做法的时间复杂度为 O(N),空间复杂度为 O(N);第二种做法的时间复杂度为 O(N2),空间复杂度为 O(1)。但它们都不满足时间复杂度为 O(N) 且空间复杂度为 O(1)。

力扣题解


==注意:==特别需要注意第二步:

    for(int i=0;i<nums.length;i++){if(nums[i]<=n && nums[i]>0){nums[nums[i]-1] = -1*nums[nums[i]-1];}}

这样写的问题所在在于: 例如 3,4,-1,1
经过第一步后变为:3,4,5,1;
按上述代码执行第二步后:3,4,-5,-1;
问题在于变为-1后 3无法标记为-3, 因此要用取绝对值的方式

    for(int i=0;i<nums.length;i++){int num = Math.abs(nums[i]);if(num<=n){nums[num-1] = -Math.abs(nums[num-1]);}}
class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;for(int i=0;i<nums.length;i++){if(nums[i]<=0){nums[i] = n+1;}}for(int i=0;i<nums.length;i++){int num = Math.abs(nums[i]);if(num<=n){nums[num-1] = -Math.abs(nums[num-1]);}}for(int i=0;i<n;i++){if(nums[i]>0){return i+1;}}return n+1;}
}

每日一题day73:等差子数组(力扣1630)


分析:
简单模拟 数据量不大 暴力求解不会超时
截取每一段数组 排序 依次判断差值是否相等

class Solution {public List<Boolean> checkArithmeticSubarrays(int[] nums, int[] l, int[] r) {//int length = l.length;Boolean[] res = new Boolean[length];Arrays.fill(res,true);for(int i=0;i<length;i++){int left = l[i];int right = r[i];int[] curArray = Arrays.copyOfRange(nums,left,right+1);Arrays.sort(curArray);int gap = curArray[1]-curArray[0];for(int j=2;j<curArray.length;j++){int diff = curArray[j]-curArray[j-1];if(diff!=gap){res[i] = false;break;}}}return Arrays.asList(res);}
}

day73【代码随想录】二刷链表相关推荐

  1. 代码随想录二刷链表篇

    链表 2.移除链表元素 ● 如果head为空就返回head,定义虚拟头节点,pre节点,cur节点.当cur 不等于null时. ● 如果当前节点的值等于val,pre.next = cur.next ...

  2. 【代码随想录二刷】Day23-二叉树-C++

    代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言:C++ 669. 修剪二叉搜索树 链接:https://leet ...

  3. 【代码随想录二刷】Day21-二叉树-C++

    代码随想录二刷Day21 今日任务 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236.二叉树的最近公共祖先 语言:C++ 530. 二叉搜索树的最小绝对差 链接:https://le ...

  4. 【代码随想录二刷】Day15-二叉树-C++

    代码随想录二刷Day15 今日任务 层序遍历 226.翻转二叉树 101.对称二叉树 语言:C++ 层序遍历 102.二叉树的层序遍历 class Solution {public:vector< ...

  5. 【代码随想录二刷】Day20-二叉树-C++

    代码随想录二刷Day20 今日任务 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 语言:C++ 654. 最大二叉树 链接:https://leetcode ...

  6. <代码随想录二刷>链表

    文章目录 203. 移除链表元素 题目描述 思路分析 参考代码 206. 反转链表 题目描述 思路分析 参考代码 24. 两两交换链表中的节点 题目描述 思路分析 参考代码 19. 删除链表的倒数第 ...

  7. 代码随想录二刷——动规篇章

    dp 动态规划篇 dp篇二刷复习 路径种数问题 63.不同路径 II 拆分问题 343. 整数拆分 96.不同的二叉搜索树 背包问题 0-1背包,最多选一个,选or不选 406.分割等和子集 1049 ...

  8. 【代码随想录二刷】day9 | 28. 实现 strStr() 459.重复的子字符串

    二刷主要记录理解不一样的题 一刷地址:day9 今日题目:中等 KMP:困难 => 第一时间想到了使用KMP,但是不太会,只有用常规方法完成 实现 strStr():拼接完两个字符串s之后,取其 ...

  9. 【代码随想录二刷】day 25 | 216.组合总和III 17.电话号码的字母组合

    二刷主要记录理解不一样的题 一刷地址:day25 今日题目:中等 组合总和III :注意剪枝操作:①sum>n:②path.size()>k class Solution {LinkedL ...

  10. 代码随想录1刷—贪心算法篇(二)

    代码随想录1刷-贪心算法篇(二) [452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-b ...

最新文章

  1. 使用Rust + Electron开发跨平台桌面应用 ( 一 )
  2. synchronized为可重入锁
  3. iOS开发-UITableView顶部图片下拉放大
  4. Spring容器与上下文理解
  5. 《也要相信》——沙叶新
  6. 干货 | 双目摄像头实现手势识别,完美还原人体运动手势
  7. C++map容器应用举例
  8. 博主已开启评论精选什么意思_小白必看!想要成为小红书博主,首先要掌握4个工具!...
  9. 旅行线路定制主题响应式手机模板
  10. java为什么密码比字符串更喜欢char []?
  11. java 符号引用与直接引用
  12. jmeter压力测试+badboy脚本录制
  13. 14. Zigbee应用程序框架开发指南 - 睡眠设备
  14. linux马达驱动程序,一种Linux系统的微型针式打印机及其驱动方法与流程
  15. linux gcc编译优化(O0、O1、O2、O3、Os)学习笔记
  16. 2020年最全最好用的在线文档盘点,建议收藏
  17. 展望下未来的计算机400字,展望未来作文400字
  18. 常用的配电箱有哪几种?
  19. idea html设置字体大小,intellij idea设置(字体大小、背景)
  20. 少一点虚荣,多一点务实

热门文章

  1. 为什么用const保护了成员变量,还要再定义一个mutable关键字来突破const的封锁线?
  2. 计算免息分期的收益 及 年金/复利现值终值的理解
  3. 专业的直播系统开发,在线直播源码讲解
  4. python项目成功打包成exe,运行exe时报错:Unhandled exception in script:Failed to excute
  5. 三国志9攻略: 修行、兵法
  6. “又一家公司取消大小周,薪资总额竟不变?”
  7. saber 2017 linux,DГ©jame contarte mГЎs encima de saber mujeres disadvantage plata
  8. PCB走线宽度和电流关系
  9. mysql安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar,问题及其他ip访问mysql
  10. 拿到新电脑后进行的一些配置,装软件