博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Ones and Zeroes
阅读量:4622 次
发布时间:2019-06-09

本文共 1890 字,大约阅读时间需要 6 分钟。

原题链接在这里:

题目:

In the computer world, use restricted resource you have to generate maximum benefit is what we always want to pursue.

For now, suppose you are a dominator of m 0s and n 1s respectively. On the other hand, there is an array with strings consisting of only 0s and 1s.

Now your task is to find the maximum number of strings that you can form with given m 0s and n 1s. Each 0 and 1 can be used at most once.

Note:

  1. The given numbers of 0s and 1s will both not exceed 100
  2. The size of given string array won't exceed 600

Example 1:

Input: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3Output: 4Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are “10,”0001”,”1”,”0”

Example 2:

Input: Array = {"10", "0", "1"}, m = 1, n = 1Output: 2Explanation: You could form "10", but then you'd have nothing left. Better form "0" and "1".

题解:

DP问题. 

求m个0和n个1最多能包含几个给出的string. 保存历史信息dp[i][j] 是i个0和j个1最多能包含几个string.

递推时, 若包含当前String s, s中有x个0和y个1. 那么dp[i][j] = 1 + dp[i-x][j-y]. 若不包含s, dp[i][j] = dp[i][j]. 两者取较大值.

初始化都是0.

答案dp[m][n].

Time Complexity: O(strs.length*m*n).

Space: O(1).

AC Java:

1 class Solution { 2     public int findMaxForm(String[] strs, int m, int n) { 3         if(strs == null || strs.length == 0 || m < 0 || n < 0){ 4             return 0; 5         } 6          7         int [][] dp = new int[m+1][n+1]; 8         for(String s : strs){ 9             int [] count = countZerosOnes(s); 10             for(int i = m; i>=count[0]; i--){11                 for(int j = n; j>=count[1]; j--){12                     dp[i][j] = Math.max(dp[i][j], 1+dp[i-count[0]][j-count[1]]);13                 }14             }15         }16         return dp[m][n];17     }18     19     private int [] countZerosOnes(String s){20         int [] res = new int[2];21         for(int i = 0; i

 

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/7616775.html

你可能感兴趣的文章
HTML5+CSS3 效果网站集合
查看>>
JavaWeb开发小结
查看>>
使用BootStrap网格布局进行一次演示
查看>>
jenkins(3): jenkins执行shell命令
查看>>
Cake slicing UVA - 1629
查看>>
iphone H5视频行内播放(禁止全屏播放)
查看>>
(转载)MVC + JQUERY + AJAX的几种方式
查看>>
记一次微信小程序开发
查看>>
“百度搜索框提示”代码
查看>>
ubuntu系统下selenium打开火狐浏览器提示'geckodriver' executable needs to be in PATH.解决方法...
查看>>
刀哥多线程之一次性代码gcd-11-once
查看>>
Python复习(拾遗)3
查看>>
组合模式
查看>>
万网虚拟主机目录
查看>>
linux下安装软件的常用方法
查看>>
Android手机自带内部存储路径的获取 (转)
查看>>
把jar包部署为linux服务
查看>>
iOS 混合开发 —— WKWebView
查看>>
Pretty girl你一定要会管理自己的身体
查看>>
RabbitMQ消息队列
查看>>