双指针
双指针
qxlxi
21届本,后端工程师 (专注于Java、Go、数据库、缓存、消息队列、网络、OS、算法、软件设计、DevOps、云原生、大数据、分布式系统架构设计等)
展开
-
【每日一题-leetcode】345. 反转字符串中的元音字母
345. 反转字符串中的元音字母难度简单112编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:"hello"输出:"holle"示例 2:输入:"leetcode"输出:"leotcede" private final static HashSet<Character> vowels = new HashSet<>( Arrays.asList('a','e','i','o','u','A','E','I',原创 2020-09-08 20:20:17 · 376 阅读 · 0 评论 -
【每日一题-leetcode】633. 平方数之和
633. 平方数之和难度简单137给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5 public boolean judgeSquareSum(int c) { int i = 0, j = (int) Math.sqrt(c);//开根号 while (i <= j) { int p原创 2020-09-08 19:44:36 · 329 阅读 · 0 评论 -
【每日一题-leetcode】167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组难度简单392给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与原创 2020-09-08 19:34:57 · 273 阅读 · 0 评论 -
【每日一题-leetcode】415.字符串相加
415.字符串相加字符串相加难度简单247给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 // 双指针 从num后 不断向前加 carry 代表进位。 // 时间复杂度为O(n) public String addStrings(String num1, String num2) { StringBuffer sb = new StringBuffer(""); int i = nu原创 2020-08-08 10:58:48 · 322 阅读 · 0 评论 -
【每日一题-leetcode】287. 寻找重复数
287. 寻找重复数寻找重复数难度中等790给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3快慢指针// 快慢指针 如果数组中有重复的数字,那么必定会形成环// 时间复杂度为O(N)public int findDuplicate(int[] nums原创 2020-07-31 18:47:22 · 407 阅读 · 0 评论 -
【每日一题-leetcode】202. 快乐数
202. 快乐数快乐数难度简单396编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 =原创 2020-07-23 17:59:59 · 363 阅读 · 0 评论 -
【每日一题-leetcode】142. 环形链表 II
142. 环形链表 II环形链表 II难度中等533给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。原创 2020-07-13 08:31:32 · 338 阅读 · 0 评论 -
【每日一题-leetcode】19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点删除链表的倒数第N个节点难度中等885给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.//快慢指针,这块删除不难,主要是要处理好 1->2 删除1这样的问题。//所以需要设定一个前置指针,至于为什么fast 和 slow要指向pre//1>2>3原创 2020-07-12 10:52:38 · 316 阅读 · 0 评论 -
【剑指offer】57 - II. 和为s的连续正数序列
57 - II. 和为s的连续正数序列面试题57 - II. 和为s的连续正数序列难度简单98输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]双指针//双指针//这类属于窗口问题,i j分别指向前后原创 2020-05-09 21:52:06 · 535 阅读 · 0 评论 -
【左神算法】荷兰国旗问题
1.问题荷兰国旗问题给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间, 大于num的数放在数组的右边。2.code思路:荷兰国旗问题的解决 * 1.设定less 为-1 位置 more 为arr.length位置 cur为当前移动的 在0位置 * a.终止条件 cur < more 一直执行...原创 2020-05-08 13:07:30 · 448 阅读 · 0 评论 -
【剑指offer】57.和为s的两个数字
57.和为s的两个数字面试题57. 和为s的两个数字难度简单18输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], targe...原创 2020-05-08 10:40:40 · 230 阅读 · 0 评论 -
【剑指offer】52.两个链表的第一个公共节点
52.两个链表的第一个公共节点面试题52. 两个链表的第一个公共节点难度简单37输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the ...原创 2020-04-30 15:33:20 · 302 阅读 · 0 评论 -
【剑指offer】22. 链表中倒数第k个节点
22. 链表中倒数第k个节点面试题22. 链表中倒数第k个节点难度简单23收藏分享切换为英文关注反馈输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3-&g...原创 2020-04-05 10:39:03 · 219 阅读 · 0 评论 -
【剑指offer】21. 调整数组顺序使奇数位于偶数前面
21. 调整数组顺序使奇数位于偶数前面难度简单12输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。1.双指针思路:i指向前边,j指向后边 i从前往后移动 当不是奇数的时候就跳出 j从后往前移动不...原创 2020-04-04 15:30:10 · 216 阅读 · 0 评论 -
【剑指offer】18. 删除链表的节点
18. 删除链表的节点难度简单12收藏分享切换为英文关注反馈给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2020-04-02 11:01:26 · 264 阅读 · 0 评论 -
【每日一题-leetcode】 88. 合并两个有序数组
88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m...原创 2020-03-30 15:11:17 · 371 阅读 · 0 评论 -
【每日一题-leetcode】283.move-zeroes
1.题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 2.题解1.空间最优,操作局部优化(双指针)//主要思路 loop 2 次 第一次将所有非0元素移动...原创 2020-03-22 19:06:20 · 330 阅读 · 0 评论