day73【代码随想录】二刷链表
文章目录
- 前言
- 一、环形链表||(力扣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【代码随想录】二刷链表相关推荐
- 代码随想录二刷链表篇
链表 2.移除链表元素 ● 如果head为空就返回head,定义虚拟头节点,pre节点,cur节点.当cur 不等于null时. ● 如果当前节点的值等于val,pre.next = cur.next ...
- 【代码随想录二刷】Day23-二叉树-C++
代码随想录二刷Day23 今日任务 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 语言:C++ 669. 修剪二叉搜索树 链接:https://leet ...
- 【代码随想录二刷】Day21-二叉树-C++
代码随想录二刷Day21 今日任务 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236.二叉树的最近公共祖先 语言:C++ 530. 二叉搜索树的最小绝对差 链接:https://le ...
- 【代码随想录二刷】Day15-二叉树-C++
代码随想录二刷Day15 今日任务 层序遍历 226.翻转二叉树 101.对称二叉树 语言:C++ 层序遍历 102.二叉树的层序遍历 class Solution {public:vector< ...
- 【代码随想录二刷】Day20-二叉树-C++
代码随想录二刷Day20 今日任务 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 语言:C++ 654. 最大二叉树 链接:https://leetcode ...
- <代码随想录二刷>链表
文章目录 203. 移除链表元素 题目描述 思路分析 参考代码 206. 反转链表 题目描述 思路分析 参考代码 24. 两两交换链表中的节点 题目描述 思路分析 参考代码 19. 删除链表的倒数第 ...
- 代码随想录二刷——动规篇章
dp 动态规划篇 dp篇二刷复习 路径种数问题 63.不同路径 II 拆分问题 343. 整数拆分 96.不同的二叉搜索树 背包问题 0-1背包,最多选一个,选or不选 406.分割等和子集 1049 ...
- 【代码随想录二刷】day9 | 28. 实现 strStr() 459.重复的子字符串
二刷主要记录理解不一样的题 一刷地址:day9 今日题目:中等 KMP:困难 => 第一时间想到了使用KMP,但是不太会,只有用常规方法完成 实现 strStr():拼接完两个字符串s之后,取其 ...
- 【代码随想录二刷】day 25 | 216.组合总和III 17.电话号码的字母组合
二刷主要记录理解不一样的题 一刷地址:day25 今日题目:中等 组合总和III :注意剪枝操作:①sum>n:②path.size()>k class Solution {LinkedL ...
- 代码随想录1刷—贪心算法篇(二)
代码随想录1刷-贪心算法篇(二) [452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-b ...
最新文章
- 使用Rust + Electron开发跨平台桌面应用 ( 一 )
- synchronized为可重入锁
- iOS开发-UITableView顶部图片下拉放大
- Spring容器与上下文理解
- 《也要相信》——沙叶新
- 干货 | 双目摄像头实现手势识别,完美还原人体运动手势
- C++map容器应用举例
- 博主已开启评论精选什么意思_小白必看!想要成为小红书博主,首先要掌握4个工具!...
- 旅行线路定制主题响应式手机模板
- java为什么密码比字符串更喜欢char []?
- java 符号引用与直接引用
- jmeter压力测试+badboy脚本录制
- 14.	Zigbee应用程序框架开发指南 - 睡眠设备
- linux马达驱动程序,一种Linux系统的微型针式打印机及其驱动方法与流程
- linux gcc编译优化(O0、O1、O2、O3、Os)学习笔记
- 2020年最全最好用的在线文档盘点,建议收藏
- 展望下未来的计算机400字,展望未来作文400字
- 常用的配电箱有哪几种?
- idea html设置字体大小,intellij idea设置(字体大小、背景)
- 少一点虚荣,多一点务实
热门文章
- 为什么用const保护了成员变量,还要再定义一个mutable关键字来突破const的封锁线?
- 计算免息分期的收益 及 年金/复利现值终值的理解
- 专业的直播系统开发,在线直播源码讲解
- python项目成功打包成exe,运行exe时报错:Unhandled exception in script:Failed to excute
- 三国志9攻略: 修行、兵法
- “又一家公司取消大小周,薪资总额竟不变?”
- saber 2017 linux,DГ©jame contarte mГЎs encima de saber mujeres disadvantage plata
- PCB走线宽度和电流关系
- mysql安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar,问题及其他ip访问mysql
- 拿到新电脑后进行的一些配置,装软件