招行笔试算法题
/*** 招行筆試算法題:有兩個長度均為n,的數組a,b,從a數組頭或尾取出一個數,* 假設第i次取的值為ax,那么第i次的價值為b[i - 1]*ax,* 價值總和為前i-1次價值之和加上第i次的價值,求第n次取數最大價值總和* 知識點:雙指針加動態規劃* @param nums int整型一維數組 * @param values int整型一維數組 * @return int整型*/public int getMaxValue (int[] nums, int[] values) {int dp[] = new int[nums.length + 1];int left = 0;int right = nums.length - 1;dp[0] = 0;int i = 1;for (int value : values) {if(left > right){return dp[nums.length];}if(nums[left] > nums[right]){dp[i] = dp[i - 1] + nums[left] * value;left++;} else{dp[i] = dp[i - 1] + nums[right] * value;right--;}i++;}return dp[nums.length];}public static void main(String[] args) {int[] a = new int[]{1,2,3,4};int[] b = new int[]{7,6,5,4};int maxValue = new Solution().getMaxValue(a, b);System.out.println(maxValue);}
總結
- 上一篇: 程序员装b指南(转)
- 下一篇: 米3换完屏信号无服务器,米3更新系统找不