当前位置:网站首页>力扣刷题日记/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上宫水三叶博主的内容,如有侵权,联系删除
边栏推荐
- 90后开始攒钱植发,又一个IPO来了
- 2022年全国CMMI认证补贴政策|昌旭咨询
- Neglected problem: test environment configuration management
- TCP waves twice, have you seen it? What about four handshakes?
- [daily question] 556 Next bigger element III
- 【Hot100】31. 下一个排列
- [HCIA continuous update] WAN technology
- Talk about seven ways to realize asynchronous programming
- TCP两次挥手,你见过吗?那四次握手呢?
- The controversial line of energy replenishment: will fast charging lead to reunification?
猜你喜欢
Thawte通配符SSL证书提供的类型有哪些
I wrote a learning and practice tutorial for beginners!
Superscalar processor design yaoyongbin Chapter 6 instruction decoding excerpt
DB-Engines 2022年7月数据库排行榜:Microsoft SQL Server 大涨,Oracle 大跌
Weima, which is going to be listed, still can't give Baidu confidence
People in the workplace with a miserable expression
Blue bridge: sympodial plant
Self reflection of a small VC after two years of entrepreneurship
蓝桥:合根植物
删除二叉搜索树中的节点附图详解
随机推荐
Solve the El input input box For number number input problem, this method can also be used to replace the problem of removing the arrow after type= "number"
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
【209】go语言的学习思想
Mysql5.7 installation tutorial graphic explanation
蓝桥:合根植物
通过事件绑定实现动画效果
你应该懂些CI/CD
MySQL常用增删改查操作(CRUD)
创业两年,一家小VC的自我反思
Performance test of Gatling
国产数据库TiDB初体验:简单易用,快速上手
表情包坑惨职场人
Neglected problem: test environment configuration management
Clever use of curl command
Detailed explanation of the maturity classification of ITSS operation and maintenance capability | one article clarifies the ITSS certificate
Machine learning concept drift detection method (Apria)
gatling 之性能测试
Superscalar processor design yaoyongbin Chapter 6 instruction decoding excerpt
Implementation of shell script replacement function
用于图数据库的开源 PostgreSQL 扩展 AGE被宣布为 Apache 软件基金会顶级项目