第三题 动态规划,力扣上有一题是让求相等长度最大是多少,和这个稍微有一点区别。来年春招再见吧。 main(){ int[] binary = new int[]{1,0,0,0,1,1,0,0,1,1}; int len = binary.length; int[] dp = new int[len+1]; char[] var = new char[len]; int zero = binary[0]==0?1:0; var[0] = (char) (binary[0]+48); PriorityQueue<String> queue = new PriorityQueue<String>((a,b)->{ return b.compareTo(a); }); for(int i = 1; i < len; i++) { var[i] = (char) (binary[i] + 48); dp[i] = Math.max(dp[i-1],zero); if(binary[i]==0){ zero++; } } if(zero==0||zero==len){ ///一个0或者1都没有 return; } dp[len] = Math.max(zero,dp[len-1]); for(int i = 1; i < len; i++) { for(int j = i-1; j >=0; j--) { zero = dp[i+1] - dp[j]; if((i-j+2)-zero==zero) { String s = String.valueOf(var, j, i - j + 1); if(queue.isEmpty()){ queue.add(s); }else{ if(i-j+1>queue.peek().length()){ queue.clear(); } queue.add(s); } } } } System.out.println(queue.peek()); }
点赞 1

相关推荐

牛客网
牛客企业服务