class Solution {
public:intfindRepeatNumber(vector<int>& nums){int n = nums.size();int*hash = new int[n];memset(hash,0,sizeof(int)* n);//应该是因为这个size!for(int i =0; i < n; i++){
hash[nums[i]]++;if(hash[nums[i]]>1){return nums[i];}}return0;}};
class Solution {int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
public:
bool exist(vector<vector<char>>& board, string word){for(int i =0; i < board.size();++i){for(int j =0; j < board[0].size();++j){if(dfs(board,word,0,i,j))return true;}}return false;}
bool dfs(vector<vector<char>>& board,string& word,int idx,int x,int y){if(board[x][y]!=word[idx])return false;if(idx==word.length()-1)return true;char t=board[x][y];
board[x][y]='.';for(int i =0; i <4;++i){int nx=x+dx[i],ny=y+dy[i];if(nx<0||nx>=board.size()||ny<0||ny>=board[0].size()||board[nx][ny]=='.')continue;if(dfs(board,word,idx+1,nx,ny))return true;}
board[x][y]=t;return false;}};
classSolution{boolean flag=false;int m;int n;char[][] board;publicbooleanexist(char[][] board,String word){this.board=board;
m=board.length;
n=board[0].length;for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(board[i][j]==word.charAt(0)){boolean arr[][]=newboolean[m][n];dfs(arr,i,j,0,word);}}}return flag;}voiddfs(boolean[][] arr,int x,int y,int start,String word){if(start==word.length()){
flag=true;return;}if(x<0||x>=m||y<0||y>=n||arr[x][y]||word.charAt(start)!=board[x][y])return;
arr[x][y]=true;dfs(arr, x, y+1, start+1, word);dfs(arr, x-1, y, start+1, word);dfs(arr, x, y-1, start+1, word);dfs(arr, x+1, y, start+1, word);
arr[x][y]=false;}}
剑指 Offer 14- I. 剪绳子
class Solution {
public:intcuttingRope(int n){int ans[]={0,1,2,3,4,6,9};if(n==2)return1;if(n==3)return2;int ret=1;while(n>6)
n-=3,ret*=3;return ret*ans[n];}};
classSolution{Map<Integer,Integer> map=newHashMap<>();publicintintegerBreak(int n){
map.put(1,1);
map.put(2,1);dfs(n);return map.get(n);}privateintdfs(int n){if(map.containsKey(n)){return map.get(n);}int res=0;for(int i =1; i < n; i++){int first=i;int secent=n-i;
res=Math.max(res,Math.max(i*(n-i),Math.max(dfs(i)*(n-i),i*dfs(n-i))));}
map.put(n,res);return res;}}
剑指 Offer 14- II. 剪绳子 II
class Solution {
public:intcuttingRope(int n){if(n==2)return1;if(n==3)return2;int mod =(int)1e9+7;long res =1;while(n >4){
res *=3;
res %= mod;
n -=3;}return(int)(res * n % mod);}};
classSolution{publicintcuttingRope(int n){if(n ==2){return1;}if(n ==3){return2;}int mod =(int)1e9+7;long res =1;while(n >4){
res *=3;
res %= mod;
n -=3;}return(int)(res * n % mod);}}
剑指 Offer 15. 二进制中1的个数
class Solution {
public:inthammingWeight(uint32_t n){int res=0;while(n>0){if(n%2==1){res++;}
n=n>>1;}return res;}};
publicclassSolution{publicinthammingWeight(int n){int count =0;for(int i =0; i <32; i++){
count += n &1;
n>>=1;}return count;}}
class Solution {
public:
vector<int>printNumbers(int n){int limit=0;while(n){
n--;
limit+=9;
limit*=10;}
limit/=10;
vector<int> ans;for(int i =1; i <= limit;++i){
ans.push_back(i);}return ans;}};
classSolution{publicint[]printNumbers(int n){int end =(int)Math.pow(10, n)-1;int[] res =newint[end];for(int i =0; i < end; i++)
res[i]= i +1;return res;}}