Leetcode练习 2.双指针
Leetcode练习 2.双指针(977.有序数组的平方,167.两数之和II-输入有序数组)
思路:因为是非递减的数组,且没有规定正负,所以一定是数组两边的数绝对值大于中间的,则平方后的数越接近两端越大,但是无法确定那一边更大。
这时候就可以用两个指针分别在两端,一边对比一边向中间走,谁大(或者小,都可以)就先把谁放到目标数组中,然后指针往中间挪一位。
直到两个指针相遇,循环结束。
//官方题解
class Solution {public int[] sortedSquares(int[] nums) {int n = nums.length;int[] ans = new int[n];for (int i = 0, j = n - 1, pos = n - 1; i <= j;) {if (nums[i] * nums[i] > nums[j] * nums[j]) {ans[pos] = nums[i] * nums[i];++i;} else {ans[pos] = nums[j] * nums[j];--j;}--pos;}return ans;}
}
思路:这道题的关键在于从“非递减数组”找到两数相加的规律,即从两端各取一个数相加,如果比目标值大,就把最大的那一端的指针前移一位,反之则把小端指针前移一位,直到找到正确的两个数。
这样用单循环就可以完成。
class Solution {public int[] twoSum(int[] numbers, int target) {int low = 0, high = numbers.length - 1;while (low < high) {int sum = numbers[low] + numbers[high];if (sum == target) {return new int[]{low + 1, high + 1};} else if (sum < target) {++low;} else {--high;}}return new int[]{-1, -1};}
}
另一个思路:(二分法)可以首先固定第一个数,然后寻找第二个数,第二个数等于目标值减去第一个数的差。利用数组的有序性质,可以通过二分查找的方法寻找第二个数。
简单做个记录,不上代码了。
Leetcode练习 2.双指针相关推荐
- C#LeetCode刷题-双指针
双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.5% 中等 11 盛最多水的容器 43.5% 中等 15 三数之和 16.1% 中等 16 最接近的三数之和 34.6% 中等 ...
- LeetCode+ 16 - 20 双指针、排序|暴搜、递归|双指针、排序|链表|栈、字符串
最接近的三数之和 算法标签:数组.双指针.排序 LeetCode+ 11 - 15 给你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和 ...
- LeetCode Gas Station(双指针 )
问题:给出n个汽油站,以及相邻两站需要消耗的汽油,问可以走一圈时汽油站的下标 思路:用start,end标记起点站和终点站,当汽油剩余量大于等于0时,说明可以进入下一站,如果与起点站相遇,说明可以走一 ...
- LeetCode解题思路—双指针模式
建议将思维导图保存下来观看,或点击这里在线观看
- 太赞了!刷题PDF终于在GitHub上开源了!覆盖字节、蚂蚁、腾讯等多家大厂真题...
最近有有不少老铁在后台留言说,想进大厂,但是算法不好.最近我整理了一份刷题实录,这份刷题实录,也让我进了心仪的大厂.现在开放分享给大家.希望对大家有所帮助. 任何的算法题,如同写作文一样,都有一些模板 ...
- GitHub 发生重大改变!国内网友:Yellow居然不限制,瞧不起我?
点击"开发者技术前线",选择"星标????" 在看|星标|留言, 真爱 来自Github中文社区 作者:huber 由于今年4月份美国爆发的反种族歧视活动,将 ...
- LeetCode算法题5:双指针
文章目录 前言 一.有序数组的平方 二.轮转数组 三.移动零 四.两数之和 II - 输入有序数组 五.反转字符串 六.反转字符串中的单词 III 七.链表的中间结点 八.删除链表的倒数第 N 个结点 ...
- (双指针、二分Binary Search) leetcode 658. Find K closest Elements
题意:给定一个升序排列的数组,找到k个与x最相近的元素(即差值最小),返回的结果必须要是按升序排好的.如果有两个数与 x的差值一样,优先选择数值较小的那个数. 解法一:双指针(排除法),一个一个删,因 ...
- leetcode 986. Interval List Intersections | 986. 区间列表的交集(双指针)
题目 https://leetcode.com/problems/interval-list-intersections/ 题解 本题用双指针.(想了下,也可以用线段树,和天际线那道题类似) clas ...
最新文章
- 如何在 Azure 中的 Linux 经典虚拟机上设置终结点
- 工作原理是什么_磁翻板液位计工作原理是什么?
- HTTP中CORS跨域请求的实现(C++|Qt框架实现)
- jQuery框架学习第三天:如何管理jQuery包装集
- 抓人眼球!插画风精美的网站首页设计欣赏
- 计算机考研数据结构算法模板
- [Flink]Flink DataStream window join 和interval join
- html range样式修改,自定义(滑动条)input[type=range]样式
- 第一篇:工作之我见一-----------细节决定成败(1)
- 《Windows游戏编程大师技巧》中关于DirectDraw和创建DirectDraw知识笔记
- 第二章 Jsp基本语法
- emu8086的入门使用
- 淘宝,京东,苏宁易购技术架构(路线)分析和比较
- java项目开发实例java+ssh+mysql实现的共享自行车单车租赁|出租管理系统
- 提取gps经纬度信息
- EN300328测试软件,蓝牙耳机EN300328测试项目。
- Python+Vue计算机毕业设计报刊征订管理系统uu609(源码+程序+LW+部署)
- 格拉姆--施密特(Gram-Schmidt)正交化方法笔记
- Frida Internal - Part 1: 架构、Gum 与 V8
- outlook计算机应用基础,计算机应用基础--outlook操作题1
热门文章
- git安装问题解决方案
- (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
- 转 ext文件系统及块组
- 周志华《机器学习》第三章课后习题
- android中c文件怎么加logo,c – 如何在CMake中添加“-l”(ell)编译器标志
- STC51单片机数码管显示程序和仿真
- 【无标题】 6UVPX 总线架构的高性能实时信号处理
- Commvault恢复时间超过2小时,网络断开问题
- 无极性的电容能代替有极性的电容吗?
- 7-12 h0004.双倍