当前位置:网站首页>力扣刷题日记/day6/6.28
力扣刷题日记/day6/6.28
2022-07-04 16:33:00 【bobo洁厕灵】
新手村
删除有序数组中的重复元素,双指针法
此方法有两个要求,要在原数组的基础上进行修改,不动用其它数组
如果数组的长度为0;
直接输出即可
如果数组的长度不为0;
设置两个指针,fast和slow,fast和slow的初值为1,因为要比较fast和fast-1的元素
fast用来遍历所有的数组元素下标,slow用来记录唯一的元素数目
当fast-1和fast指向的元素不相同时,将fast代表的元素给到slow代表的元素,并将++slow,++fast
当fast和fast-1指向的元素相同时,++fast,slow不变
例如下图,当第一次开始循环时,fast-=1,代表的元素0,和fast-1代表的元素相同,此时,fast继续往右前进,slow不变。
fast=2时,此时指向的元素为1,和fast-1指向的元素0不同,此时将fast指向的元素1赋给slow指向的元素,nums[slow]=nums[fast],并将slow往右移动,++slow,fast继续往右前进,++fast
继续前进下去。。。。。。
直到fast=9时(n=10,fast<n),将nums[9]的值赋给nums[4],++slow=5,此时将nums[slow]输出,就是消除了重复元素的数组。
slow就是新的数组的长度,是在原数组的基础上进行修改的。
例题
解题思路:如上
class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
if (n == 0) { //判断数组的长度是否为0
return 0;
}
int fast = 1, slow = 1; //设置两个快慢指针
while (fast < n) { //数组的长度为n,那么末尾的元素位置是n-1
if (nums[fast] != nums[fast - 1]) {
nums[slow] = nums[fast];
++slow; //最后要输出无重复数组的长度,所以选择++slow
}
++fast; //防止非法进入循环
}
return slow; //返回无重复数组的长度
}
}
其余思路:
foreach遍历 (for 每一个)
jdk5.0新特性,新的for循环
for(type x:type Y)
遍历数组或集合Y的元素,每一次遍历把元素值赋给x
例如
for(int num:nums)
就是把nums这个数组进行遍历,它有多少个数,就遍历多少遍。
遍历的时候每次就把其中的一个值给num;
foreach可以使用for语句替代
for(int i =0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
通用思路:
class Solution {
public int removeDuplicates(int[] nums) {
return process(nums, 1);
}
int process(int[] nums, int k) {
int idx = 0;
for (int x : nums) {
if (idx < k || nums[idx - k] != x) nums[idx++] = x;
}
return idx;
}
}
最后两种思路引用了leetcode上宫水三叶博主的内容,如有侵权,联系删除
边栏推荐
- 庆贺!科蓝SUNDB与中创软件完成七大产品的兼容性适配
- Five thousand words to clarify team self-organization construction | Liga wonderful talk
- 【系统盘转回U盘】记录系统盘转回U盘的操作
- DB engines database ranking in July 2022: Microsoft SQL Server rose sharply, Oracle fell sharply
- 曾经的“彩电大王”,退市前卖猪肉
- Reptile elementary learning
- Face_ Attendance statistics of recognition face recognition
- Stars open stores, return, return, return
- Face_recognition人脸识别之考勤统计
- How to test MDM products
猜你喜欢
MySQL common add, delete, modify and query operations (crud)
“在越南,钱就像躺在街上”
Stars open stores, return, return, return
【Hot100】32. 最长有效括号
表情包坑惨职场人
同事悄悄告诉我,飞书通知还能这样玩
为啥有些线上演唱会总是怪怪的?
DB engines database ranking in July 2022: Microsoft SQL Server rose sharply, Oracle fell sharply
数学分析_笔记_第7章:多元函数的微分学
用于图数据库的开源 PostgreSQL 扩展 AGE被宣布为 Apache 软件基金会顶级项目
随机推荐
ISO27001认证办理流程及2022年补贴政策汇总
Talk about seven ways to realize asynchronous programming
谷粒商城(一)
Imitation of numpy 2
TCP waves twice, have you seen it? What about four handshakes?
I always thought that excel and PPT could only be used for making statements until I saw this set of templates (attached)
"In Vietnam, money is like lying on the street"
Tutorial on the use of Huawei cloud modelarts (with detailed illustrations)
项目通用环境使用说明
[cloud native] what is the "grid" of service grid?
Face_ Attendance statistics of recognition face recognition
Machine learning concept drift detection method (Apria)
超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
LD_ LIBRARY_ Path environment variable setting
Heartless sword Chinese translation of Elizabeth Bishop's a skill
庆贺!科蓝SUNDB与中创软件完成七大产品的兼容性适配
Android uses sqliteopenhelper to flash back
【Proteus仿真】基于VSM 串口printf调试输出示例
Detectron2 installation method
Win32 API access route encrypted web pages