招行笔试算法题
/*** 招行筆試算法題:有兩個(gè)長(zhǎng)度均為n,的數(shù)組a,b,從a數(shù)組頭或尾取出一個(gè)數(shù),* 假設(shè)第i次取的值為ax,那么第i次的價(jià)值為b[i - 1]*ax,* 價(jià)值總和為前i-1次價(jià)值之和加上第i次的價(jià)值,求第n次取數(shù)最大價(jià)值總和* 知識(shí)點(diǎn):雙指針加動(dòng)態(tài)規(guī)劃* @param nums int整型一維數(shù)組 * @param values int整型一維數(shù)組 * @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);}
總結(jié)
- 上一篇: 程序员装b指南(转)
- 下一篇: pdf批量盖章软件_我的PDF休要乱用