精華區beta Marginalman 關於我們 聯絡資訊
剩下10分鐘還有一題hard開擺了 第一題 分別用用紅球當頭和藍球當頭模擬取高度比較高的那個。 class Solution { public int maxHeightOfTriangle(int red, int blue) { return Math.max(helper(red, blue), helper(blue, red)); } private int helper(int red, int blue) { int h = 1; int round = 0; while (true) { if (round == 0) { red -= h; } else { blue -= h; } if (red < 0 || blue < 0) { break; } h++; round = 1 ^ round; } return h - 1; } } 第二題 dp問題 序列要馬是 1.全偶數 2.全奇數 3.奇偶交錯 上面三個情況取最大的就好 class Solution { public int maximumLength(int[] nums) { int odd = 0; int even = 0; int oddEven = 0; int evenOdd = 0; for (int num : nums) { if (num % 2 == 1) { odd++; oddEven = evenOdd + 1; } else { even++; evenOdd = oddEven + 1; } } int res = Math.max(even, odd); res = Math.max(res, oddEven); res = Math.max(res, evenOdd); return res; } } 第三題 第二題的延伸 要想出一個通用方法 因為測資變小了所以可以用很暴力的方式 class Solution { public int maximumLength(int[] nums, int k) { int n = nums.length; int res = 0; int[][] dp = new int[n][k]; for (int i = 0; i < n; i++) { Arrays.fill(dp[i], 1); for (int j = 0; j < i; j++) { int key = (nums[i] + nums[j]) % k; dp[i][key] = Math.max(dp[i][key], dp[j][key] + 1); res = Math.max(res, dp[i][key]); } } return res; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.73.13 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1719719536.A.849.html
ImpotenCat: 大師 06/30 11:52
sustainer123: 大師 我第二題就死去 哇哇嗚嗚嗚 06/30 11:53
smart0eddie: 大師 我根本不知道有week contest 06/30 11:54
oin1104: 我快哭了 06/30 12:24