当前位置: 首页 > news >正文

【算法】——双指针算法合集(力扣)

 8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

第一题:移动零

第二题:复写零

第三题:快乐数

第四题:盛最多水的容器

第五题:有效三角形的个数

第六题:和为s的两个数

第七题:三数之和

第八题:四数之和


 

第一题:移动零

283. 移动零 - 力扣(LeetCode)

class Solution {public void moveZeroes(int[] nums) {int dest = -1;int cur = 0;int tem = 0;while(cur < nums.length){if(nums[cur] != 0){dest++;tem = nums[dest] ;nums[dest] = nums[cur];nums[cur] = tem;}cur++;}}
}

第二题:复写零

1089. 复写零 - 力扣(LeetCode)

class Solution {public void duplicateZeros(int[] arr) {int cur = 0 , dest = -1 , n = arr.length;while(cur <= n){//dest位置不确定所以不能用作判断循环的条件if(arr[cur] != 0){dest++;}else{dest += 2;}if(dest >= n-1){break;}cur++;}if(dest == n){arr[n-1] = 0;dest -= 2;cur--;}//开始从后往前复写while(cur >= 0 ){if(arr[cur] != 0){arr[dest] = arr[cur];cur--;dest--;}else{arr[dest] = arr[cur];dest--;arr[dest] = arr[cur];cur--;dest--;}}}
}

第三题:快乐数

202. 快乐数 - 力扣(LeetCode)

class Solution {public static int sumResult(int n){int sum = 0;while(n != 0){//int tem = n % 10;//sum += tem * tem;sum += Math.pow(n%10,2);n = n/10;}return sum;} public boolean isHappy(int n) {int slow = n ,fast = sumResult(n);while(slow != fast){slow = sumResult(slow);fast = sumResult(sumResult(fast));}return slow == 1;}
}

第四题:盛最多水的容器

11. 盛最多水的容器 - 力扣(LeetCode)

class Solution {public int maxArea(int[] height) {int left = 0 ,right = height.length -1 , ret = 0;while(left < right){int v = Math.min(height[left],height[right]) * (right - left);ret = Math.max(ret,v);if(height[left] < height[right]){left++;}else{right--;}}return ret;}
}

第五题:有效三角形的个数

611. 有效三角形的个数 - 力扣(LeetCode)

class Solution {public int triangleNumber(int[] nums) {int end = nums.length-1;Arrays.sort(nums);int count = 0;for( ; end >= 2 ; end--){int right = end-1;int left = 0;while(left < right){int tem = nums[left] + nums[right];if(tem > nums[end]){count += right - left;right--;}else{left++;}}            } return count;}
}

第六题:和为s的两个数

LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode)

class Solution6 {public int[] twoSum(int[] price, int target) {int n = price.length;int left = 0 , right = n-1;int[] car = {-1,-1};while(left < right){int result = sum(price[left],price[right]);if(result < target){left++;}else if(result > target){right--;}else{car[0] = price[left];car[1] = price[right];return car;}}return car;}public int sum(int a , int b){int sum = a + b;return sum;}
}

第七题:三数之和

15. 三数之和 - 力扣(LeetCode)

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);int n = nums.length;List<List<Integer>> ret = new ArrayList<>();for(int i = 0 ; i < n ;){if(nums[i] > 0){break;}int left = i+1 , right = n-1 ,target = -nums[i];while(left < right){int sum = sum(nums[left] , nums[right]);if(sum > target){right--;}else if(sum < target){left++;    }else{ret.add(Arrays.asList(nums[left] , nums[right] , nums[i]));left++;right--;while(left < right && nums[left] == nums[left - 1]){left++;}while(left < right && nums[right] == nums[right + 1]){right--;}}}i++;while(i < n && nums[i] == nums[i-1]){i++;}}return ret;}public int sum(int a , int b){return a+b;}
}

第八题:四数之和

18. 四数之和 - 力扣(LeetCode)

强烈建议先把三数之和看完

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> list = new ArrayList();Arrays.sort(nums);int n = nums.length;for(int i = 0 ; i < n ; ){//第一层循环遍历固定a遍历数组int a = nums[i];for(int j = i+1 ; j < n ; ){int b = nums[j] , left = j+1 ,right = n-1;long tem = (long)target - a - b;while(left < right){long sum = sum(nums[left],nums[right]);if(sum > tem){right--;}else if(sum < tem){left++;}else{list.add(Arrays.asList(a,b,nums[left],nums[right]));left++;right--;while(left < right && nums[left] == nums[left-1]){left++;}while(right > left && nums[right] == nums[right+1]){right--;}}}j++;while(j < n-2 && nums[j] == nums[j-1]){j++;}}i++;while(i < n-1 && nums[i] == nums[i-1]){i++;}}return list;}public int sum(int a , int b){return a+b;}
}


http://www.mrgr.cn/news/46113.html

相关文章:

  • linuxshell日常脚本命令之sed命令
  • 6 个最佳本地运行大模型的工具
  • 无人机陆空双模式。
  • 延迟队列:时间敏感的任务调度神器
  • ArrayList和LinkedList区别
  • sql 查询(case when)
  • mybatisPlus对于pgSQL中UUID和UUID[]类型的交互
  • m4a怎么转换mp3格式?几种m4a转变成MP3简单方法
  • C++ STL 中的 unordered_map
  • K8s-资源管理
  • 世界职业院校技能大赛赛道设计对“新双高”专业群建设的启示
  • 小型无人机,你负责算法和应用逻辑,剩下的我们负责
  • 基于ZABBIX监控 RabbitMQ服务开箱模板汉化及适用性改造
  • ChatGPT相关参数示例
  • 论文阅读:On determining the hinterlands of China‘s foreign trade container ports
  • Rope – 基于深度学习模型开源的AI换脸技术
  • 山西农业大学20241009
  • 基于SSM的酒店管理系统
  • 加密软件有哪些?2024年十大好用的企业文件加密软件大盘点
  • AFSim仿真系统 --- 系统简解_08 传感器与特征