双指针法
shoushudao111
这个作者很懒,什么都没留下…
展开
-
三位数之和
三位数之和难点在于跳过重复,多举例子就好了,当然也可以使用set去重复但是效率较低。直接暴力会超时,时间复杂度为O(n2lgn).解法一:两层循环,第三个使用二分查找。class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums...原创 2018-11-19 20:14:16 · 219 阅读 · 0 评论 -
四位数之和
四位数之和暴力法,会超时。两层循环,再使用双指针,觉得难点还是再去重复上。class Solution { public List<List<Integer>> fourSum(int[] nums,int target) { Arrays.sort(nums); List<List<Integer>&...原创 2018-11-19 20:18:19 · 373 阅读 · 0 评论 -
头条面试题-统计有序数组里平方和的数目
给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。举例: nums = {-1,1,1,1}, 那么你应该返回的是:1。因为这个数组所有数的平方取值都是1,只有一种取值 nums = {-1,0,1,2,3} 你应该返回4,因为nums数组所有元素的平方值一共4种取值:1,0,4,9...原创 2018-11-18 11:07:55 · 4346 阅读 · 4 评论 -
141. Linked List Cycle 142. Linked List Cycle II 287. Find the Duplicate Number
141. Linked List Cycle思路:使用两个指针,一个每次走一步,一个每次走两步,当两者相等时肯定存在环,并且如果存在环两者必有相等的时候。 存在环的可以一直走到两者相等,不存在环的会结束==null。public class Solution { public boolean hasCycle(ListNode head) { ListNode...原创 2018-11-23 09:19:59 · 117 阅读 · 0 评论 -
438. Find All Anagrams in a String
438. Find All Anagrams in a String 思路1:暴力解决,显然超时。class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> list=new ArrayList<Integer>()...原创 2018-11-28 10:32:26 · 118 阅读 · 0 评论 -
牛客网题解-回文序列
回文序列BFS解法,题目第一眼的感觉是最短路径,于是尝试使用BFS和队列求解,提交时显示超时,因此需要对题目进行进一步分析。首先回文序列,可能想到的是外面一个循环,挨个去遍历以每一个人位置上的字符为回文序列的中心,形成一个回文序列所需要的操作次数,接着往下分析,按照题目所给的规则进行操作时,没法下手。此时应当换个角度考虑,假如我们从两端开始,步步逼近回文序列,当两端不相等时,取较小的一端求...原创 2018-11-09 11:35:29 · 322 阅读 · 0 评论 -
贪心算法-881. Boats to Save People
881. Boats to Save People贪心算法,我的思路:先对people数组从小到大排序,然后依次取出最大的未被乘船的,接着从大到小再找出一个体重加一起小于限制的,这样的话之间复杂度应该是o(n2),提交显示超时。大神的思路:双指针;先对数组排序,从大往小依次乘船,取一个当前状态中最大的,然后看看最小的是否可以和他一起乘船,如果可以一起,那就两个人一起,人数不可以超过2,...原创 2018-12-19 11:58:09 · 194 阅读 · 0 评论