1.杨辉三角
var generate = function(numRows) { const result=[] if(numRows<=0) return result; for(let i =0;i<numRows;i++){ const subarr=[] for(let j=0;j<=i;j++){ if(j>0&&j<i){ subarr.push(result[i - 1][j - 1] + result[i - 1][j]); } else{ subarr.push(1); } } result.push(subarr); } return result; };2.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 解法一(直接法):
var MaxSubArray=function(nums){ let result=nums[0]; //用result来保存最大子序和 let sum=0>nums[0]?nums[0]:0; //用sum来保存当前的和 //可以很自然的想到用result和sun进行比较来获得最后的最大子序 for(const num of nums){ sum=num>sum+num?num:sum+num; result=sum>result?sum:result; } return result; }解法二(动态规划):
var MaxSubArray=function(nums){ let result=nums[0]; let sum=0; for(const num of nums){ if(sum>0) sum+=num; else sum=num; result=Math.max(sum,result); } return result; }3.杨辉三角(2) 条件如第一题,要求输出杨辉三角的第k行
var getRow = function(rowIndex) { const result=[]; if(rowIndex<0) return 0; else { for(let i =0;i<rowIndex+1;i++) { let subArr=[]; for(let j=0;j<=i;j++) { if(j>0&&j<i) subArr.push(result[i-1][j-1]+result[i-1][j]); else subArr.push(1); } result.push(subArr); } return result[rowIndex] } };4.股票 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。
var maxProfit = function(prices) { let dif=0; let temp=prices[0]; for(let i =0;i<prices.length;i++){ temp=Math.min(temp,prices[i]); dif=Math.max(dif,prices[i]-temp); } return dif; };