网站图标怎么做的,成都网络推广运营,课程网站开发运行环境,wordpress 答题假设把某股票的价格按照时间先后顺序存储在数组中#xff0c;请问买卖该股票一次可能获得的最大利润是多少#xff1f; 示例 1:
输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天#xff08;股票价格 1#xff09;的时候买入#xff0c;在第 5 天#xff08;股票价格 6请问买卖该股票一次可能获得的最大利润是多少 示例 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。
限制
0 数组长度 10^5
思路对于第i个时间必须卖出的答案而言最优解为在之前最便宜时买入。 minn记录之前最小值。ans记录所有卖出时间的最优解。
class Solution {public int maxProfit(int[] prices) {int lenprices.length;if(len1){return 0;}int ans0;//最终答案int minnprices[0];//之前的最小值int i;for(i1;ilen;i){minnprices[i-1]minn?prices[i-1]:minn;ansprices[i]-minnans?prices[i]-minn:ans;}return ans;}
} 求 12...n 要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句A?B:C。 示例 1
输入: n 3 输出: 6 示例 2
输入: n 9 输出: 45
限制
1 n 10000
用短路原则写递归终止条件。
class Solution {public int sumNums(int n) {int result 0;boolean b n 0 (result n sumNums(n-1)) 0;return result;}
} 写一个函数求两个整数之和要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 示例:
输入: a 1, b 1 输出: 2
提示
a, b 均可能是负数或 0 结果不会溢出 32 位整数
模拟加法器即可。
class Solution {public int add(int a, int b) {while (b ! 0) {int plus (a ^ b);b ((a b) 1);a plus;}return a;}
} 给定一个数组 A[0,1,…,n-1]请构建一个数组 B[0,1,…,n-1]其中 B 中的元素 B[i]A[0]×A[1]×…×A[i-1]×A[i1]×…×A[n-1]。不能使用除法。 示例:
输入: [1,2,3,4,5] 输出: [120,60,40,30,24]
提示
所有元素乘积之和不会溢出 32 位整数 a.length 100000
思路从两边乘到自己就停。
class Solution {public int[] constructArr(int[] a) {int n a.length;int[] B new int[n];for (int i 0, product 1; i n; product * a[i], i) /* 从左往右累乘 */B[i] product;for (int i n - 1, product 1; i 0; product * a[i], i--) /* 从右往左累乘 */B[i] * product;return B;}
}