leetcode-双指针遍历】的更多相关文章

一:Minimum Size Subarray Sum(最小长度子数组的和O(N)) 题目: Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead. For example, given the array [2,3,1,2,4,3…
11. Container With Most Water 题意:取两根求最大体积 思路:使用两个指针分别指向头和尾,然后考虑左右两根: 对于小的那根,如果选择了它,那么能够产生的最大体积一定是当前的情况:因为当前情况体积=这根长度 * 当前距离,以后的话长度一定是左右边界的min,即<=这根长度,距离一定越来越小 因此小的那根以后就不会被选了,因此把小的那根的指针挪动一下 直到指针相遇 class Solution { public: int maxArea(vector<int>&a…
最短路径=>BFS    所有路径=>DFS 126. Word Ladder II BFS+DFS: BFS找出下一个有效的word进队 并记录step 更新两个变量:unordered_map<string, vector<string>> next, unordered_map<string,int> visit DFS找出所有的解法 更新两个变量:vector<vector<string>> result, vector<…
1. 具体题目 给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到.如果答案不止一个,返回长度最长且字典顺序最小的字符串.如果答案不存在,则返回空字符串. 示例 1: 输入: s = "abpcplea", d = ["ale","apple","monkey","plea"] 输出:  "apple" 2. 思路分析 遍历字符串数组…
1. 具体题目 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n.你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素. 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6] 2. 思路分析 本题应该从…
1. 具体题目 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a^2 + b^2 = c. 示例1: 输入: 5 输出: True 解释: 1 * 1 + 2 * 2 = 5 注:a可以等于b 2. 思路分析 假设a < b,若存在结果值,那么 b 最大为 c 的平方根,a 此时为 0.所以设置双指针,初始化 low 为 0,high 为 c 的平方根,之后从两边逼近结果值,思路类似于leetcode167两数之和. 3. 代码 public boolean judgeSq…
498. 对角线遍历 根据题目的图像看,主要有两种走法,第一种是向右上(顺时针方向),第二种是向左下(逆时针)走 我们设 x ,y初始为0,分别对应横纵坐标 现在分析右上(0,2) 为例:(注意右上的判断方向是顺时针 右上-->右-->下) 先判断是否可以右上 (5-->3),可以右上,则移动,并且下一个坐标继续判断是否可以右上 不可以右上,则判断是否可以向右(1-->2),可以向右,则移动,并且下一个坐标需要换方向(左下) 不可向右,再判断是否可以向下 (3-->6),可以…
1. 485. 最大连续 1 的个数 1.1 分析题意 首先:我们求的是连续的1的个数,所以我们不能也没必要对数组进行排序: 其次:只要求求出最大连续1的个数,并不要求具体的区间数目,所以我们只需要用一个值来记录这个结果: 1.2 思路分析: 一个for循环遍历数组里面的每一个元素,当前元素有两种情况: 当前元素为1,那就将temp+1: 如果当前元素不是1,那就更新ans并将temp重置为0: 1.3 复杂度分析 时间复杂度:O(n) 空间复杂度:O(1) 2. 495. 提莫攻击 2.1 题…
题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).…
JavaScript /** * @param {number[][]} matrix * @return {number[]} */ var findDiagonalOrder = function(matrix) { if(matrix == []) return [] let m = matrix.length let n = matrix[0].length let i=0,j=0 let arr = [] for(let l = 0;l<m*n;l++){ arr.push(matri…