javaScript力扣刷题——简单数组(三)
2021/11/8 17:39:46
本文主要是介绍javaScript力扣刷题——简单数组(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
88. 合并两个有序数组
splice() 方法向/从数组添加/删除项目,并返回删除的项目。可以添加。
var merge = function(nums1, m, nums2, n) { nums1.splice(m,n,...nums2); nums1.sort(function(a,b){return a-b}); };
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。
var merge = function(nums1, m, nums2, n) { nums1.splice(m,n); nums1=[...nums1,...nums2]; nums1.sort(function(a,b){return a-b}); };//不可行,运行后nums1长度为m,不再是m+n
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。是一种栈的方式。
var merge = function(nums1, m, nums2, n) { nums1.splice(m,n); nums1.push(...nums2); nums1.sort(function(a,b){return a-b}); };//但用push是可以的,而且比splice直接添加速度更快!
283. 移动零
理解双指针,其实就是定位两种标志。
本题可以一个0,一个非零,依次遍历就可以了,将0和非0交换位置。
var moveZeroes = function(nums) { let j=0; for(let i=0;i<nums.length;i++){ if(nums[i]!=0){ if(i!=j){[nums[j],nums[i]]=[nums[i],nums[j]];}//注意交换的用法 j++; } } return nums; };
122. 买卖股票的最佳时机 II
可以多次购买,只要是上升趋势都可以购买。
var maxProfit = function(prices) { let max = min = prices[0]; let lirun = sum = 0; for(let num of prices){ if(Math.max(num,max) == num){ max = Math.max(num,max); min = Math.min(num,min); lirun = Math.max(max-min,lirun); } else{ max = num; min = num; sum += lirun; lirun = 0; } } if(lirun!=0){sum += lirun;} return sum; };
更简洁的贪心算法,不是实际买卖时间,只要是上升的就算利润。
var maxProfit = function(prices) { let len = prices.length; let sum = 0; for(let i = 1;i<len;i++){ sum+=Math.max(0,prices[i]-prices[i-1]) } return sum; };
简单数组题到此结束,这类题大多只需要一个循环。若是n2复杂度,则要考虑如何加变量,双指针来减少一次循环。
注意,数组sort函数不能直接用于数字排序,会有错误,需要function(a,b){return a-b}
splice函数不但可以删除也可以插入,会改变数组长度。
push,pop是栈的用法,不会改变数组长度。
这篇关于javaScript力扣刷题——简单数组(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-30PS网页切图项目实战:初学者必备指南
- 2024-09-30Span标签项目实战:新手入门教程
- 2024-09-309D资料入门指南:轻松掌握基础操作
- 2024-09-30如何获取和利用变形资料:新手入门指南
- 2024-09-30弹性盒子布局资料:新手必读教程
- 2024-09-30手把手教你如何使用“点击加载资料”功能
- 2024-09-30封装资料入门教程:轻松掌握封装资料的方法与技巧
- 2024-09-30钢琴效果资料:新手入门指南
- 2024-09-30滚动吸顶资料详解:轻松掌握网页常见布局技巧
- 2024-09-30后台交互资料详解:新手入门教程