(day 34 - 哈希表 or 双指针 )剑指 Offer 57. 和为s的两个数字
题目
题链:剑指 Offer 57. 和为s的两个数字
题解
大佬详细题解:面试题57. 和为 s 的两个数字(双指针 + 证明,清晰图解)
最简单的就是暴力解法、直接双重循环、显然时间复杂度是O(n^2)是不可取的。使用哈希表稍微好点,由于数组是有序序列、所以我们可以使用双指针一个在前一个在后。
解法一:
使用哈希表
public int[] twoSum02(int[] nums, int target) {HashMap<Integer,Integer> map = new HashMap<>();for (int num : nums) {if (num >= target){break;}if (map.containsKey(num)){return new int[]{map.get(num),num};}map.put(target - num,num);}return new int[]{};}
解法二:双指针
因为是排好序的、所以一个从头开始一个从尾开始。
class Solution {public int[] twoSum(int[] nums, int target) {int l=0,r=nums.length - 1;while (l<r){int sum = nums[l] + nums[r];if (sum == target){return new int[]{nums[l],nums[r]};}if (sum > target) {r--;}else {l++;}}return new int[]{};}
}
(day 34 - 哈希表 or 双指针 )剑指 Offer 57. 和为s的两个数字相关推荐
- LeetCode_剑指 Offer 57. 和为s的两个数字(利用set、双撞指针两种思路 Java实现)
题目描述:剑指 Offer 57. 和为s的两个数字 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,则输出任意一对即可. 示例 1: 输入:n ...
- 【算法】剑指 Offer 57. 和为s的两个数字
1.概述 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,则输出任意一对即可. 示例 1: 输入:nums = [2,7,11,15], tar ...
- [剑指Offer] 42.和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. [思 ...
- 剑指 Offer II 006. 排序数组中两个数字之和
由于题目中数组已经排好序,所以可以用双指针 双指针: i=0,j=nums.size( )-1 当 i<j 时循环,当目标小于target时i++,当目标大于target时,j-- 当目标小于t ...
- 剑指offer:和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 解题思路 class Solution { public:v ...
- 《剑指offer》和为s的两个数字
题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 解析:由 ...
- 剑指Offer值和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 思路 l表示左侧位置,r表示右侧位置.不断向中间靠拢,如果a ...
- 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...
- LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列
剑指 Offer 57 - II. 和为s的连续正数序列 Ideas 区间问题首先想到用双指针. 因为这题没有给定数组,其实相当于就是一个从1到target的数组,然后直接套双指针的模板就可以了. 双 ...
- 【LeetCode】剑指 Offer 57 - II. 和为s的连续正数序列
[LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 文章目录 [LeetCode]剑指 Offer 57 - II. 和为s的连续正数序列 一.求和公式 二.滑动窗口(双指针 ...
最新文章
- Java学习总结:16
- Thread.sleep(0):线程休眠0秒有什么意义!
- redis内部分享ppt
- php组装json数据包,php封装json通信接口详解及实例
- php str_replace 字符串替换
- ssl1759-求连通分量【图论,深搜,广搜】
- 十三、oracle 数据字典和动态性能视图
- VScode 常用快捷键
- 地图与输出之间的基准面发生冲突_【地图技巧】荒野乱斗: 全球锦标赛全地图英雄推荐...
- Oracle oci.dll 下载地址
- 信息学奥赛一本通1368 对称二叉树
- html如何转换成中文,html页面中如何将编码转换成中文的示例代码
- 3步上架iOS APP【2022最新教程】
- 微信账户如何解除对第三方应用的授权
- OSChina 周四乱弹 —— 妹子上班迟到的原因
- HOE-32020,23554-99-6用于染色DNA的蓝色荧光染料
- js鸡兔同笼35个头94只脚用 鸡有多少只兔有多少只?
- 数论 之 中国剩余定理(孙子定理)
- Unicode 和多字节字符集 (MBCS) 支持
- 熬了三个大夜利用Python开发一个炸金花小游戏,注意别玩上瘾了~~(附完整源码)