day73【代码随想录】二刷链表

news/2023/6/5 21:22:35

文章目录

  • 前言
  • 一、环形链表||(力扣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);}
}

https://dhexx.cn/news/show-18745.html

相关文章

[转]windows下sqlmap的配置方法

1、首先下载SqlMap 2、其次下载用于Windows系统的Python ……点击这里…… 3、然后安装Python&#xff1a; Python默认安装的路径是“C:\Python”&#xff08;你也可以修改安装路径&#xff0c;但要记住路径&#xff09;&#xff0c;直接默认安装“下一步”OK … :) 4、解压Sq…

[摘]一张图 , oracle merge用法:

转载于:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996855.html

三维分布图 matlab,怎样用matlab画三维三点分布图

怎样用matlab画三维三点分布图mip版 关注:226 答案:2 悬赏:50解决时间 2021-01-28 14:02已解决2021-01-28 06:18怎样用matlab画三维三点分布图最佳答案2021-01-28 06:53plot3(x向量&#xff0c;y向量&#xff0c;z向量&#xff0c;.) 最后.表示用点画出来&#xff0c;还有*,…

6-1-1——this指针与const应用

/* 【项目1】下面的程序存在编译错误。有两种方法可以修改&#xff0c;请给出这两种修改方案&#xff0c;在报告中说明你倾向于用哪一种&#xff1f;为什么&#xff1f;处理此类问题的原则是什么&#xff1f; * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机…

Matlab建模红细胞,图像处理—红细胞计数(Matlab)

图像处理—红细胞计数(Matlab) 红细胞计数处理过程使用全局阈值二值化图像&#xff0c;仅使白细胞可以在二值图像中显示&#xff1b;调整二值化图像阈值&#xff0c;使白细胞和红细胞都可在二值图像中显示出来&#xff1b;将两图像进行减操作&#xff0c;从第二幅图像中去除白细…

oracle性能调优 linux,Oracle数据库性能优化之调优 PPT

Oracle数据库性能优化之调优培训大纲&#xff1a;Tuning DesignTuning ApplicationTuning ProcessTuning InstanceTuning DatabaseTuning IOTuning OSWait Event需求开发阶段&#xff0c;数据库优化的目的是说服业务人员接受对数据库影响比较小的操作习惯&#xff0c;而放弃那些…

Linux网络协议栈(三)——网络设备(1)

网络设备(network device)是内核对网络适配器(硬件)的抽象与封装&#xff0c;并为各个协议实例提供统一的接口&#xff0c;它是硬件与内核的接口&#xff0c;它有两个特征&#xff1a;(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口&#xff1b;(2) 内核协议栈…

就这样一直走下去吧 亲爱的

转载于:https://www.cnblogs.com/88223100/archive/2013/04/08/3007386.html

cocos2d-x for wp之EaseActions——运动加速效果

在现实生活中有很多情况下&#xff0c;物体的运动都是带有加速度的运动。如果只是凭借cocos2d-x&#xff08;wp&#xff09;里的CCActionInstanse&#xff08;瞬时动作的基类&#xff09;和CCActionInterval&#xff08;延时动作的基类&#xff09;是无法达到“逼真”的现实运动…

是面试官放水,还是企业实在是缺人?这都没挂,字节原来这么容易进...

“字节是大企业&#xff0c;是不是很难进去啊&#xff1f;”“在字节做软件测试&#xff0c;能得到很好的发展吗&#xff1f;一进去就有9.5K&#xff0c;其实也没有想的那么难”直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾讯…