Leetcode--Java--15,高并发你真的理解透彻了吗
2021/9/8 9:39:29
本文主要是介绍Leetcode--Java--15,高并发你真的理解透彻了吗,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
示例 2:
输入:nums = []
输出:[]
### []( )思路 1. 双指针。 双指针需要有序,先将数组排序,保证指向的值 i < j < k ![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=35df36e62bf54423af8e2de0ea050b9d.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NoZXJsb2NrX09iYW1h,size_16,color_FFFFFF,t_70) 2. 固定i,双指针枚举k,j ,如果j增大,k必然减小,因为 i + j + k = 0 3. 去重。若当前数和上一个数是一样的话,就跳过。 因为上一个已经把取nums\[i\]的情况枚举完了 优化后的方法: 1. 固定i,动态调整另外两个指针 2. i指针要去重。同时在加入到将结果集后l和r指针也要去重,改变指针的位置指向下一个不同的地方 ### []( )代码
class Solution {
public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new ArrayList<>(); //先排序 Arrays.sort(nums); int len = nums.length; for (int i = 0; i < len; i ++ ) { //去重,如果和上一个i指向的数一样 if (i > 0 && nums[i] == nums[i - 1]) continue; //j k两个指针不能相遇 for (int j = i + 1, k = len - 1; j < k; j ++ ) { //去重,如果和上一个j指向的数相同 if (j > i + 1 && nums[j] == nums[j - 1]) continue; //找到满足 >= 0的最小的 k //试探法。 如果下一个数满足,就用下一个数。使得退出while循环时k不会等于j while (j < k - 1 && nums[i] + nums[j] + nums[k - 1] >= 0) k --; if (nums[i] + nums[j] + nums[k] == 0) { // List<Integer> ans = new ArrayList<>(); // ans.add(nums[i]); // ans.add(nums[j]); // ans.add(nums[k]); res.add(new ArrayList<Integer>(Arrays.asList(nums[k], nums[i], nums[j]))); // res.add(ans); } } } return res; }
}
优化后的方法
class Solution {
public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums); int len = nums.length; List<List<Integer>> res = new ArrayList<>(); for (int i = 0; i < len - 2; i ++ ) { if (nums[i] > 0) break; //如果i指的数大于0,则三个数一定大于0 //去重
最后
CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】
由于篇幅原因,就不多做展示了
外链图片转存中…(img-wYkjdL0S-1631063993056)]
[外链图片转存中…(img-kZ3jFn2B-1631063993058)]
[外链图片转存中…(img-PLLAnaBA-1631063993059)]
由于篇幅原因,就不多做展示了
这篇关于Leetcode--Java--15,高并发你真的理解透彻了吗的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略