算法
csu_zipple
fe
展开
-
LeetCode - 94. 二叉树的中序遍历
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } *//** * @param {TreeNode} root * @return {number[]} */var...原创 2019-11-06 22:12:24 · 175 阅读 · 0 评论 -
LeetCode - 58. 最后一个单词的长度
/** * @param {string} s * @return {number} */var lengthOfLastWord = function(s) { s = s.trim(); const len = s.length; let ret = 0; for (let i = len - 1; i >= 0; i--) { ...原创 2019-11-06 21:54:53 · 149 阅读 · 0 评论 -
LeetCode - 6. Z 字形变换
暴力解法…/** * @param {string} s * @param {number} numRows * @return {string} */var convert = function(s, numRows) { let arr = []; for (let i = 0; i < numRows; i++) { arr.p...原创 2019-11-05 22:31:14 · 208 阅读 · 0 评论 -
LeetCode - 122. 买卖股票的最佳时机 II
不知道都是些什么神仙,绞尽脑汁想了个O(n)出来…竟然只超过了2/3/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { const len = prices.length; let profit = 0; let min = prices[0...原创 2019-11-04 22:19:53 · 127 阅读 · 0 评论 -
LeetCode - 219. 存在重复元素 II
只想到用双指针做,但是速度太慢了,不过明显两次循环时有部分操作可以跳过,但是不想做了。/** * @param {number[]} nums * @param {number} k * @return {boolean} */var containsNearbyDuplicate = function(nums, k) { while (k > 0) { ...原创 2019-10-24 22:52:07 · 2209 阅读 · 0 评论 -
299. 猜数字游戏
/** * @param {string} secret * @param {string} guess * @return {string} */var getHint = function(secret, guess) { const len = secret.length; let dict = {}; let bulls = []; let co...原创 2019-10-18 19:35:12 · 178 阅读 · 2 评论 -
LeetCode - 5. 最长回文子串
根据自己的理解用双指针做的,速度很慢:/** * @param {string} s * @return {string} */var longestPalindrome = function(s) { const len = s.length; let ret = ''; for (let start = 0; start < len; start++)...原创 2019-09-16 23:02:17 · 134 阅读 · 0 评论 -
LeetCode - 20. 有效的括号
利用栈来存储遍历的结果,每次将栈顶元素与当前元素进行匹配。判断是否能够组成括号,不能就push进去,能就将栈顶元素pop出来。/** * @param {string} s * @return {boolean} */var isValid = function(s) { const len = s.length; let ret = []; for (let ...原创 2019-09-18 22:11:56 · 127 阅读 · 1 评论 -
LeetCode - 283. 移动零
按照题目,很快写出来这样的代码:var moveZeroes = function(nums) { const len = nums.length; for (let i = len - 1; i >= 0; i--) { if (nums[i] === 0) { for (let j = i; j + 1 < len; j++...原创 2019-09-18 23:04:57 · 113 阅读 · 0 评论 -
LeetCode - 1025. 除数博弈
这是一道数学题…多推导一下可以猜测偶数就赢~/** * @param {number} N * @return {boolean} */var divisorGame = function(N) { return N % 2 === 0;};原创 2019-09-19 22:12:37 · 144 阅读 · 0 评论 -
LeetCode - 485. 最大连续1的个数
按照连续和的做法做的:/** * @param {number[]} nums * @return {number} */var findMaxConsecutiveOnes = function(nums) { let ret = 0; let temp = 0; nums.forEach(it => { if(it) { ...原创 2019-09-20 23:38:46 · 123 阅读 · 0 评论 -
LeetCode - 739. 每日温度
暴力解法:/** * @param {number[]} T * @return {number[]} */var dailyTemperatures = function(T) { let ret = []; const len = T.length; for (let i = 0; i < len; i++) { for (let j ...原创 2019-09-20 23:49:58 · 168 阅读 · 0 评论 -
LeetCode - 121. 买卖股票的最佳时机
双指针,一个从前往后,一个从后往前。/** * @param {number[]} prices * @return {number} */var maxProfit = function(prices) { const len = prices.length - 1; let ret = 0; for (let start = 0; start <= l...原创 2019-09-10 23:03:37 · 148 阅读 · 0 评论 -
LeetCode - 16. 最接近的三数之和
按照三数之和的思路做,结果速度和内存都这么慢…/** * @param {number[]} nums * @param {number} target * @return {number} */var threeSumClosest = function(nums, target) { nums = nums.sort((a, b) => a - b); co...原创 2019-09-10 22:31:40 · 137 阅读 · 0 评论 -
一行代码解决统计数组 arr 中值等于 item 的元素出现的次数的问题
化成字符串利用切割来统计出现的次数function count(arr, item) { return arr.toString().split(item+"").length-1;}原创 2018-11-07 11:18:52 · 711 阅读 · 0 评论 -
LeetCode -172. 阶乘后的零
我想起来以前有一道题:n!最后一位是几?1! = 1;2! = 2;3! = 6;4! = 24;5! = 120 = 1*2*3*4*5 = 1*3*4*2*5;当n>5时,最后一位必为0。所以这道题也是类似,只需要看有多少个2*5就好了。因为在阶乘中, 2比5多,所以只需要看有多少个5。/** * @param {number} n * @return {numbe...原创 2019-09-02 22:25:33 · 125 阅读 · 0 评论 -
LeetCode - 27. 移除元素
利用splice直接删除/** * @param {number[]} nums * @param {number} val * @return {number} */var removeElement = function(nums, val) { for(let i = 0; i < nums.length; i++) { if (nums[i] =...原创 2019-09-04 22:42:09 · 99 阅读 · 0 评论 -
【留坑】判断贪心算法是否是最优解的思路
最近在看《编程之美》这本书,在讲到书的折扣问题的时候想了一个问题:当每一步都是最优解的时候为什么总体却不是最优解,也就是说如何判断贪心算法是不是最优解?子问题最优->整体最优和动态规划之间的问题-----留坑待补√...原创 2019-09-04 22:50:14 · 3901 阅读 · 1 评论 -
LeetCode - 26. 删除排序数组中的重复项
和这一题有点类似,不过方法不一样,都用下面这种方法也可解。/** * @param {number[]} nums * @return {number} */var removeDuplicates = function(nums) { let left = 0; for (let i = 1; i < nums.length; i++) { if...原创 2019-09-05 22:21:53 · 90 阅读 · 0 评论 -
LeetCode - 35. 搜索插入位置
利用二分查找来搜索插入位置:/** * @param {number[]} nums * @param {number} target * @return {number} */var searchInsert = function(nums, target) { //二分搜索 let right = nums.length - 1; let left = 0...原创 2019-09-05 22:46:41 · 116 阅读 · 0 评论 -
LeetCode - 53. 最大子序和
最大子序和就是连续的数组项之和最大,因此从头到尾遍历一次。一直相加,如果相加的s开始小于等于0,则证明到这一项的时候前面的序列不可能是最大子序和的序列。因此重新开始累加就好了。/** * @param {number[]} nums * @return {number} */var maxSubArray = function(nums) { let s = 0; le...原创 2019-09-06 22:36:58 · 108 阅读 · 0 评论 -
LeetCode - 88. 合并两个有序数组
思路就是从后往前遍历,避免一次挪动太多位。/** * @param {number[]} nums1 * @param {number} m * @param {number[]} nums2 * @param {number} n * @return {void} Do not return anything, modify nums1 in-place instead. */...原创 2019-09-07 09:04:08 · 88 阅读 · 0 评论 -
LeetCode - 75. 颜色分类
看到这题目描述的第一感觉就是冒泡排序:/**在这里插入图片描述 * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var sortColors = function(nums) { const len = nums.length - ...原创 2019-09-09 20:03:25 · 172 阅读 · 0 评论 -
LeetCode - 11. 盛最多水的容器
双指针遍历一遍就可以计算出最大面积:/** * @param {number[]} height * @return {number} */var maxArea = function(height) { let left = 0; let right = height.length - 1; let ret = 0; while(left < r...原创 2019-09-09 21:53:29 · 100 阅读 · 0 评论 -
LeetCode - 15. 三数之和
leetcode题解中@王德福的解释比较清楚,可以解这一类的问题:按照他的思路实现的代码如下:/** * @param {number[]} nums * @return {number[][]} */var threeSum = function(nums) { nums = nums.sort((a, b) => a - b); let ret = [];...原创 2019-09-09 23:17:49 · 124 阅读 · 0 评论 -
根据栈的输入序列判断栈的出栈序列是否合理
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)代码解法function IsPopOrder(pushV, popV){...原创 2018-08-15 16:56:57 · 1082 阅读 · 0 评论