力扣hot100双指针总结(0124)

目录

lc-15.三数之和 (时隔13天)

​lc-283.移动零(时隔16天)

lc-42.接雨水(一遍过)


lc-15.三数之和 (时隔13天)

目前可通过,想法上无逻辑问题,一点细节小错误需注意即可

lc-283.移动零(时隔16天)

总结:观察案例直觉就是双指针遇零交换,两次实现都通过了,且思想与题解一致,但是时间复杂度较高,没有题解巧妙,代码实现的方式会影响到时间复杂度,需要想到一个巧妙的代码实现,才能使时间复杂度为O(n);

思路:一个指针从首位开始指向,如果遇到0停下,另一个指针则寻找不是0的,找到后二者进行交换即可,首位指针i走到头即可结束
分析:设置两个指针,其中一个指针可以用for循环i代表,另一个指针初始化一个变量即可。
寻找非零指针用for循环中的i代表则更好,条件结束时说明数组里面已经无非零元素了

class Solution {
	public void moveZeroes(int[] nums) {
		if(nums==null) {
			return;
		}
		//两个指针i和j
		int j = 0;
		for(int i=0;i<nums.length;i++) {
			//当前元素!=0,就把其交换到左边,等于0的交换到右边
			if(nums[i]!=0) {
				int tmp = nums[i];
				nums[i] = nums[j];
				nums[j++] = tmp;
			}
		}
	}
}	

lc-42.接雨水(0124 一遍过)

总结:可编写思路边实现代码,列出当前问题拆分成子问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值