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

【随想】每日两题Day.12(实则一题)

题目:15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

提示:

  • 3 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

代码:

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();int left = 0;int right = 0;Arrays.sort(nums);for(int i = 0;i<nums.length;i++) {if(nums[i] > 0) return res;if(i>0 && nums[i]==nums[i-1]) continue;left = i+1;right = nums.length - 1;while(left < right) {int sum = nums[i] + nums[left] + nums[right];if(sum > 0) {right--;}else if(sum < 0) {left++;}else{res.add(Arrays.asList(nums[i],nums[left],nums[right]));//对b,c去重while(right>left && nums[left] == nums[left+1]) left++;while(right>left && nums[right] == nums[right-1]) right--;left++;right--;}}}return res;}
}

思考:

此题难度不小,在日后复习要多敲代码反复品味。思考部分有待补充

http://www.lryc.cn/news/187137.html

相关文章:

  • 基于复旦微JFM7K325T FPGA的高性能PCIe总线数据预处理载板(100%国产化)
  • 什么是原型链(prototype chain)?如何实现继承?
  • RabbitMQ 5种工作模式介绍和Springboot具体实现
  • C++ - 可变模版参数 - emplace相关接口函数 - 移动构造函数 和 移动赋值运算符重载 的 默认成员函数
  • 总结三:计算机网络面经
  • 服务器数据恢复-VMWARE ESX SERVER虚拟机数据恢复案例
  • COCI 2021-2022 #1 - Set 题解
  • 分享40个极具商业价值的chatGPT提问prompt
  • 一文搞懂到底什么是元宇宙
  • 【重拾C语言】六、批量数据组织(四)线性表—栈和队列
  • 力扣刷题-哈希表-一个字符串是否能够由另一个字符串中的字符组成
  • Android使用AOP切面编程
  • Flutter学习笔记
  • 软件生命周期中的概念设计和详细设计的主要任务是什么
  • 大数据学习(2)Hadoop-分布式资源计算hive(1)
  • 深入探究HTML表单与JavaScript的关系
  • 关于Jupyter notebook 创建python3 时进去不能重命名问题及不能编程问题
  • 一些可以用代码绘制流程图的工具
  • Centos中清除因程序异常终止,导致的残留的Cache/buff_drop_caches命令---linux工作笔记063
  • Element-UI的使用——表格el-table组件去除边框、滚动条设置、隔行变色、去除鼠标悬停变色效果(基于less)
  • python的一些知识点
  • QML 带框最大化显示方法
  • conda命令大全
  • 国庆要闻回顾 | OpenAI 拟研发 AI 手机;9月以太坊上NFT销售量创2021年2月以来最低记录...
  • 国家开放大学 模拟试题 训练
  • 【GIT版本控制】--常见问题与解决方案
  • Redis安装及key、string操作
  • TCP和UDP的由浅到深的详细讲解
  • 端粒/端粒酶生信切入点,6+端粒酶+泛癌+甲基化+实验。
  • XMLHttpRequest和Fetch API