
LeetCode
我是噢噢噢
这个作者很懒,什么都没留下…
展开
-
力扣股票问题大合集
因为最近笔试做了一道股票问题,之前其实做过,但是笔试的时候还是想了很久。所以决定来总结一下这类股票问题。level 1剑指offer 63.股票的最大利润特点:只买卖一次,求最大利润。思路:遍历数组的每一位,找到下标为 i 的元素之前最小的元素。比较是当前卖出更高,还是不卖更高。var maxProfit = function(prices) { if(prices.length < 2) return 0; let min = prices[0]; const d原创 2021-08-24 19:42:34 · 325 阅读 · 1 评论 -
LeetCode两数之和JS
一般思路是双层循环,但是这样时间复杂度太高了,所以我们一般都要反思可不可以改成一层循环。用空间换时间,采用Map。而且一般求和问题我们都转化为求差问题。所以我们遍历数组,把值当做key,把索引当做value,每次比较看target - nums[i]是否已经存在,存在则返回答案var twoSum = function(nums, target) {const map = new Map(); const len = nums.length; for (let i = 0; i &l.原创 2021-01-11 14:55:44 · 173 阅读 · 0 评论 -
LeetCode实现 strStr()JavaScript
解法一:双重循环,当第一位匹配时,利用循环检查后面是否匹配。这种解法速度的确很慢…var strStr = function(haystack, needle) { var arr1 = haystack.split(''); var arr2 = needle.split(''); if(arr2.length==0) return 0; for(var i=0;i<arr1.length;i++) { if.原创 2020-07-12 17:56:00 · 114 阅读 · 0 评论 -
LeetCode字符串转化整数(atoi)JavaScript
根据题意,主要要求如下:忽略开头的空格判断符号忽略整数后的字符注意范围其他情况返回0使用parseInt方法,可以满足前三个要求,剩下的要求就分情况讨论就可以了var myAtoi = function (str) { var numb = parseInt(str, 10); if (isNaN(numb)) { return 0; } else if (numb < Math.pow(-2, 31) || numb > ...原创 2020-07-09 18:26:44 · 160 阅读 · 0 评论 -
LeetCode整数反转JavaScript
解题思路:首先注意X本来就是一位数的特殊情况,这种情况就返回它本身。然后把整数转换成数组后反转,然后分正数和负数讨论,最后还要注意一个数值范围。var reverse = function(x) { if(x>=0&&x<=9) { return x; } var arr = x.toString().split('').reverse(); if(arr[arr.length-1]==='-').原创 2020-07-07 16:41:13 · 309 阅读 · 0 评论 -
LeetCode移动零JavaScript
思路:从后往前循环(因为从前往后循环当我使用splice方法时会改变原数组前面的下标,会对接下来的操作有影响),如果有元素为0,通过splice()方法和push方法()删除元素,并在末尾添加0var moveZeroes = function(nums) { for(let i=nums.length-1;i>=0;i--) { if(nums[i]==0) { .原创 2020-06-28 16:28:11 · 171 阅读 · 0 评论 -
LeetCode加一JavaScript实现
解题思路:加一有两种情况,第一种情况是数组的最后一个元素不是9,那么就直接给最后一个元素加1,第二种情况是最后一个元素是9,则将当前位置的数字置0,再检查倒数第二个元素…以此类推。当所有元素都置0后,检查第一个元素是不是0,如果是,通过数组的unshift()方法,给数组添加一个数值为1的首元素。var plusOne = function(digits) { var i; for(i=digits.length-1;i>=0;i--) { .原创 2020-06-28 15:49:06 · 688 阅读 · 0 评论 -
LeetCode只出现一次的数字JavaScript
解法一:由于受到“存在重复元素”的启发,我的解题思路就是先对数组排序,再通过第i个数与它的前一个数以及后一个数是否相等来判断。var singleNumber = function(nums) { nums.sort(); for(let i=0;i<nums.length;i++) { if((nums[i-1]!=nums[i])&&(nums[i]!=nums[i+1])) return .原创 2020-06-28 01:03:44 · 181 阅读 · 0 评论 -
LeetCode存在重复元素JavaScript
解题思路:先排序再比较相邻两个数是否相等。sort() 方法用于对数组的元素进行排序。var containsDuplicate = function(nums) { nums.sort();//数组排序 for(let i=1;i<nums.length;i++) { if(nums[i]===nums[i-1]) { return true; .原创 2020-06-28 00:41:10 · 126 阅读 · 0 评论 -
LeetCode旋转数组C语言和JS解法
解决思路:先逆置前半段,再逆置后半段,最后整个逆置void rotate(int* nums, int numsSize, int k){ int i = 0; int tmp = 0; int j = 0; k %= numsSize;//只需要旋转小于numsSize的长度 for (i = 0, j = numsSize - 1 - k; i<j; i++, j--)//对前半部分逆置 { tmp = nums[i]; nums[i] = nums[j]; .原创 2020-06-26 00:13:29 · 239 阅读 · 0 评论 -
LeetCode买卖股票的最佳时机 II JavaScript
解题思路:从第一天开始买入,只要有收益就可以直接卖出,接下来再买入,同样一旦有收益就可以卖出,这是一种典型的贪心思想,局部最优达到全局最优。下面上代码:var maxProfit = function(prices) { var i,profit=0; for(i=1;i<prices.length;i++) { if(prices[i]>prices[i-1]) { .原创 2020-06-25 11:40:52 · 111 阅读 · 0 评论 -
LeetCode删除排序数组中的重复项JavaScript
用C语言解决这个问题,因为不能使用额外的数组空间,所以只能在原有的数组中通过数组下标来进行赋值操作int removeDuplicates(int* nums, int numsSize){ int i,s=0; if(numsSize<2) return numsSize; else { for(i=1;i<numsSize;i++) { if(nums[s]!=nums[i]) .原创 2020-06-22 14:44:43 · 151 阅读 · 0 评论