LeetCode日拱一卒

121.Best Time to Buy and Sell Stock (2018 8/7)
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
例1:
输入:[7,1,5,3,6,4]
输出:5
说明:在第2天买入(价格=1)并在第5天卖出(价格=6),利润=6-1=5.不是7-1=6,因为售价需要大于购买价格。
例2:
输入:[7,6,4,3,1]
输出:0
说明:在这种情况下,没有进行任何交易,即最大利润=0.
const maxProfit = function(prices) { //price写在里面代表它是会级作用域 const用作块级作用域
if (prices === null || prices.length === 0) {
return 0;
}
var min = Number.MAX_VALUE;
var profit = 0;
var i;
for (i = 0; i < prices.length; i++) {
min = prices[i] < min ? prices[i] : min;
profit = (prices[i] - min) > profit ? prices[i] - min : profit;
}
return profit;
}

 

454.4Sum II(2018 8/8 未完成) 

给定四个列表A,B,C,D的整数值,计算(i, j, k, l)有多少元组,使其A[i] + B[j] + C[k] + D[l]为零。

为了使问题更容易,所有A,B,C,D具有相同的N长度,其中0≤N≤500。所有整数在-228到228 - 1 的范围内,结果保证在大多数231 - 1。

例:

 输入:

A = [1,2]
B = [-2,-1]
C = [-1,2]
D = [0,2]
输出:
2
说明:
这两个元组是:
1.(0,0,0,1) - > A [0] + B [0] + C [0] + D [1] = 1 +( -  2)+( -  1)+ 2 = 0
2.(1,1,0,0) - > A [1] + B [1] + C [0] + D [0] = 2 +( -  1)+( -  1)+ 0 = 0

考察知识点:

思路:利用嵌套循环的方式
多行条件判断
if () {} else if () {} else {}
 
for循环利用索引来遍历数组
x = A[i];
y = B[i];
z = C[i];
sum=x+y+z;
if sum =0满足条件 input
 
for ... in循环可以直接循环出Array的索引
var o={};
for(var key in o){
console.log(i); 
console.log(a[i]);      
};
 
1. 两数之和(2018 8/9 TODO) 

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]


 

 

 

posted @ 2018-08-07 11:44  EdisonVan  阅读(180)  评论(0编辑  收藏  举报