国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

幾個面試經典算法題Java解答

開發(fā) 后端 開發(fā)工具 算法
畢業(yè)季關于面試問題又到高潮,今天是一些JAVA的幾個面試經典算法題。

題目一:

 

  1. public class testClockwiseOutput { 
  2.     //順時針打印一個矩陣 
  3.     
  4.     @Test 
  5.     public void test(){ 
  6.         int[][] num = new int[100][100]; 
  7.         int n = 4
  8.         int count =1
  9.         
  10.         for(int i=0;i<n;i++){ 
  11.             for(int j =0;j<n;j++){ 
  12.                 num[i][j]=count++; 
  13.             } 
  14.         } 
  15.         
  16.         output(num,0,n-1); 
  17.     } 
  18.     
  19.     public void output(int[][] num,int start,int end){ 
  20.         if(start>=end || end<=0)return
  21.         for(int i=start;i<=end;i++){ 
  22.             System.out.println(num[start][i]); 
  23.         } 
  24.         for(int i=start+1;i<=end;i++){ 
  25.             System.out.println(num[i][end]); 
  26.         } 
  27.         for(int i=end-1;i>=start;i--){ 
  28.             System.out.println(num[end][i]); 
  29.         } 
  30.         for(int i=end-1;i>start;i--){ 
  31.             System.out.println(num[i][start]); 
  32.         } 
  33.         output(num,start+1,end-1); 
  34.     } 

 

題目二:

給出一個排序好的數(shù)組和一個數(shù),求數(shù)組中連續(xù)元素的和等于所給數(shù)的子數(shù)組

 

  1. //給出一個排序好的數(shù)組和一個數(shù),求數(shù)組中連續(xù)元素的和等于所給數(shù)的子數(shù)組 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         int[] num = {1,2,2,3,4,5,6,7,8,9}; 
  6.         int sum = 7
  7.         findSum(num,sum); 
  8.     } 
  9.     
  10.     public void findSum(int[] num,int sum){ 
  11.         int left=0
  12.         int right=0
  13.         
  14.         for(int i=0;i<num.length;i++){ 
  15.             int curSum = 0
  16.             left = i; 
  17.             right = i; 
  18.             while(curSum<sum){ 
  19.                 curSum += num[right++]; 
  20.             }            
  21.             if(curSum==sum){ 
  22.                 for(int j=left;j<right;j++){ 
  23.                     System.out.print(num[j]+" "); 
  24.                 } 
  25.                 System.out.println(); 
  26.             } 
  27.         } 
  28.     } 

 

題目三:

 

  1. //字符數(shù)組組成的所有字符串 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         //char[] cs = {'a','b','c','d','e'};        
  6.         char[] cs = {'a','b','c'};    
  7.         int length = cs.length;        
  8.         recursionSwap(cs,0,length); 
  9.     } 
  10.     
  11.     public void swap(char[] cs,int index1,int index2){ 
  12.         char temp = cs[index1]; 
  13.         cs[index1]=cs[index2]; 
  14.         cs[index2]=temp;        
  15.     } 
  16.     
  17.     public void recursionSwap(char[] cs,int start,int length){ 
  18.         if(start>=length-1){ 
  19.             print(cs); 
  20.             return
  21.         } 
  22.         for(int i=start;i<length;i++){ 
  23.             swap(cs,start,i); 
  24.             recursionSwap(cs,start+1,length);    
  25.             swap(cs,start,i); 
  26.         } 
  27.     } 
  28.     
  29.     public void print(char[] cs){ 
  30.         for(int i=0;i<cs.length;i++){ 
  31.             System.out.print(cs[i]); 
  32.         } 
  33.         System.out.println(); 
  34.     } 

 

題目四:

 

  1. //數(shù)組組成的最小數(shù) 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         int[] num={1,5,9,13,442,44,6,21,211}; 
  6.         qsort(num,0,num.length-1); 
  7.         System.out.println(Arrays.toString(num)); 
  8.     } 
  9.     
  10.     public void qsort(int[] num,int left,int right){ 
  11.         if(left<right){ 
  12.             int partition = partition(num,left,right); 
  13.             qsort(num,left,partition-1); 
  14.             qsort(num,partition+1,right); 
  15.         }    
  16.     } 
  17.     
  18.     public int partition(int[] num,int left,int right){ 
  19.         int partition = num[left]; 
  20.         while(left<right){ 
  21.             while((num[right]==partition || isMBigerThanN(num,num[right],partition)) && left<right){ 
  22.                 right--; 
  23.             }            
  24.             swap(num,left,right);    
  25.             while((num[left]==partition || isMBigerThanN(num,partition,num[left])) && left<right){ 
  26.                 left++; 
  27.             } 
  28.             swap(num,left,right);        
  29.         } 
  30.         
  31.         return left; 
  32.     } 
  33.     
  34.     public void swap(int[] num,int m,int n){ 
  35.         int temp = num[m]; 
  36.         num[m]=num[n]; 
  37.         num[n]=temp; 
  38.     } 
  39.     
  40.     public boolean isMBigerThanN(int[] num,int m,int n){ 
  41.         String num1 = String.valueOf(m); 
  42.         String num2 = String.valueOf(n); 
  43.         
  44.         int temp1 = Integer.parseInt(num1+num2); 
  45.         int temp2 = Integer.parseInt(num2+num1); 
  46.         
  47.         if(temp1>temp2){ 
  48.             return true
  49.         } 
  50.         else
  51.             return false
  52.         } 
  53.     } 

 

題目五:

 

  1. //子數(shù)組***和 
  2.     @Test 
  3.     public void test(){ 
  4.         int[] num = {1,-2,3,10,-4,7,2,-5}; 
  5.         //int[] num = {1,-2,3,10,-4,10,2,-5}; 
  6.         System.out.println(maxSum(num)); 
  7.     } 
  8.     
  9.     public int maxSum(int[] num){ 
  10.         int curSum = 0
  11.         int curMaxSum = -99999999
  12.         int start = 0
  13.         int end = 0
  14.         
  15.         for(int i=0;i<num.length;i++){ 
  16.             if(curSum<=0){ 
  17.                 curSum = num[i]; 
  18.                 start = i; 
  19.             } 
  20.             else
  21.                 curSum += num[i]; 
  22.             } 
  23.             if(curSum>curMaxSum){ 
  24.                 curMaxSum = curSum;        
  25.                 end = i; 
  26.             } 
  27.         }    
  28.         for(int i = start;i<=end;i++){ 
  29.             System.out.println(num[i]); 
  30.         } 
  31.         return curMaxSum; 
  32.     } 

 

題目六:

 

  1. public class testMinStack { 
  2.     //自定義棧,min函數(shù)得到當前最小值 
  3.     
  4.     @Test 
  5.     public void test(){ 
  6.         MinStack ms = new MinStack(); 
  7.         ms.push(5); 
  8.         System.out.println(ms.min()); 
  9.         ms.push(6); 
  10.         ms.push(2); 
  11.         ms.push(1); 
  12.         System.out.println(ms.min()); 
  13.         ms.pop(); 
  14.         System.out.println(ms.min()); 
  15.         ms.pop(); 
  16.         System.out.println(ms.min()); 
  17.         
  18.     } 
  19.  
  20. class MinStack{ 
  21.     private Stack<Integer> minStack = new Stack<Integer>();    
  22.     private Stack<Integer> stack = new Stack<Integer>(); 
  23.     
  24.     public int pop(){ 
  25.         minStack.pop();        
  26.         return stack.pop(); 
  27.     } 
  28.     
  29.     public void push(int num){ 
  30.         if(minStack.size()<=0){ 
  31.             minStack.push(num); 
  32.             return
  33.         } 
  34.         Integer min = minStack.lastElement(); 
  35.         if(num<min){ 
  36.             minStack.push(num); 
  37.         } 
  38.         else
  39.             minStack.push(min); 
  40.         } 
  41.         stack.push(num); 
  42.     } 
  43.     
  44.     public int min(){ 
  45.         if(minStack.size()<=0){ 
  46.             return -1
  47.         } 
  48.         return minStack.lastElement(); 
  49.     } 

 

題目七:

 

  1. //找出數(shù)組中出現(xiàn)次數(shù)大于一半的數(shù) 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         int[] num = {1,2,2,2,2,2,2,4,2,4,6,4,2,6,8,2,7,7}; 
  6.         System.out.println(moreThanHaft(num)); 
  7.     } 
  8.     
  9.     public int moreThanHaft(int[] num){        
  10.         int result = -1
  11.         int times = 0
  12.         for(int i=0;i<num.length;i++){ 
  13.             if(times==0){ 
  14.                 result = num[i]; 
  15.                 times++; 
  16.             } 
  17.             else
  18.                 if(num[i]==result){ 
  19.                     times++; 
  20.                 } 
  21.                 else
  22.                     times--; 
  23.                 } 
  24.             } 
  25.         } 
  26.         
  27.         return result; 
  28.     } 

 

題目八:

  1. //判斷一個數(shù)組是否是另一個棧的出棧順序 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         int[] num = {1,2,3,4,5}; 
  6.         //int[] num1={1,2,3,5,4}; 
  7.         int[] num2={2,1,5,3,4}; 
  8.         Stack<Integer> s1 = new Stack<Integer>(); 
  9.         Stack<Integer> s2 = new Stack<Integer>(); 
  10.         for(int i=0;i<5;i++){ 
  11.             s2.push(num2[i]); 
  12.         } 
  13.         
  14.         System.out.println(testOrder(num,s1,s2)); 
  15.     } 
  16.     
  17.     public boolean testOrder(int[] num,Stack<Integer> s1,Stack<Integer> s2){ 
  18.         int length = num.length;        
  19.         for(int i=0;i<length;i++){ 
  20.             s1.push(num[i]); 
  21.             int s2Num = s2.lastElement(); 
  22.             if(s2Num==s1.lastElement().intValue()){ 
  23.                 s1.pop(); 
  24.                 s2.pop(); 
  25.             } 
  26.         } 
  27.         while(!s1.isEmpty()){ 
  28.             if(!s1.pop().equals(s2.pop())){ 
  29.                 return false
  30.             } 
  31.         } 
  32.         return true
  33.     } 
  34.  
  35. 復制代碼

題目九:

 

  1. //從撲克牌抽5張牌,0可以為任意數(shù),判斷是否是順子 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         int[] num = {0,1,5,3,2}; 
  6.         System.out.println(check(num)); 
  7.     } 
  8.     
  9.     public boolean check(int[] num){ 
  10.         //0-13 
  11.         int[] pai = new int[14]; 
  12.         for(int n : num){ 
  13.             pai[n]+=1
  14.         } 
  15.         qsort(num,0,num.length-1); 
  16.         int count = pai[0]; 
  17.         int start = 0
  18.         if(num[0]==0){ 
  19.             start=num[1]; 
  20.         } 
  21.         else
  22.             start=num[0]; 
  23.         } 
  24.         for(int i = start;i<=start+5;i++){ 
  25.             if(pai[i]>1)return false
  26.             count += pai[i]; 
  27.         } 
  28.         if(count == 5)return true
  29.         else return false
  30.         
  31.     } 
  32.     
  33.     public void qsort(int[] num,int left,int right){ 
  34.         if(left<right){ 
  35.             int partition = partition(num,left,right); 
  36.             qsort(num,left,partition-1); 
  37.             qsort(num,partition+1,right); 
  38.         } 
  39.     } 
  40.     
  41.     public int partition(int[] num,int left,int right){ 
  42.         int partition = num[left]; 
  43.         while(left<right){ 
  44.             while(left<right && num[right]>=partition){ 
  45.                 right--; 
  46.             } 
  47.             swap(num,left,right); 
  48.             while(left<right && num[left]<=partition){ 
  49.                 left++; 
  50.             } 
  51.             swap(num,left,right); 
  52.         } 
  53.         
  54.         return left;        
  55.     } 
  56.     
  57.     public void swap(int[] num,int m,int n){ 
  58.         int temp = num[m]; 
  59.         num[m]=num[n]; 
  60.         num[n]=temp; 
  61.     } 

 

題目十:

  1. //輸出第k個丑數(shù)(因子只有2,3,5) 
  2.     
  3.     @Test 
  4.     public void test(){ 
  5.         findUglyNum(8); 
  6.     } 
  7.     
  8.     public void findUglyNum(int index){ 
  9.         int[] num = new int[index]; 
  10.         int next = 1
  11.         num[0]=1
  12.         int index2=0
  13.         int index3=0
  14.         int index5=0;    
  15.  
  16.         while(next<index){ 
  17.             int num2 = num[index2]*2
  18.             int num3 = num[index3]*3
  19.             int num5 = num[index5]*5
  20.             
  21.             num[next] = getSuitable(num2,num3,num5); 
  22.             
  23.             while(num[index2]*2<=num[next]){ 
  24.                 index2++; 
  25.             } 
  26.             while(num[index3]*3<=num[next]){ 
  27.                 index3++; 
  28.             } 
  29.             while(num[index5]*5<=num[next]){ 
  30.                 index5++; 
  31.             }                
  32.             next++; 
  33.             
  34.         } 
  35.         System.out.println(num[index-1]); 
  36.     } 
  37.     
  38.     public int getSuitable(int num2,int num3,int num5){ 
  39.         int s = num2; 
  40.         if(num3<s){ 
  41.             s = num3; 
  42.         } 
  43.         if(num5<s){ 
  44.             s = num5; 
  45.         } 
  46.         return s; 
  47.     } 
[[137673]]

 

[[137673]]

 

責任編輯:王雪燕 來源: 博客園
相關推薦

2018-12-10 11:30:06

Openstack面試命令

2011-03-01 09:36:26

面試算法解題思路

2021-05-31 07:01:46

限流算法令牌

2009-03-10 10:06:33

面試題筆試題微軟

2024-02-28 09:22:03

限流算法數(shù)量

2011-04-20 16:58:33

java排序

2009-02-11 09:22:19

JavaJava開發(fā)Oracle應用

2021-12-01 09:25:58

SQL數(shù)據(jù)庫數(shù)據(jù)庫基礎

2018-02-01 09:26:12

面試算法題程序員

2023-12-07 11:01:27

Python常用模塊內置模塊

2020-02-06 08:58:09

程序員技術數(shù)據(jù)庫

2024-07-26 08:47:07

2011-05-19 16:30:38

軟件測試

2012-08-23 09:44:32

面試面試題算法

2025-04-03 09:56:40

Python算法開發(fā)

2009-03-23 10:25:22

JavaOracle應用開發(fā)

2014-07-28 14:00:40

linux面試題

2024-11-27 10:10:37

2021-04-14 12:07:03

Java算法序列

2015-08-19 09:35:49

Java main面試題
點贊
收藏

51CTO技術棧公眾號

亚洲高清免费在线| 高清视频在线观看三级| 成人国产在线激情| 大伊人狠狠躁夜夜躁av一区| 久久精品一区二区国产| 51亚洲精品| 亚洲综合影视| 黄色av资源| av动漫在线免费观看| 国产成人精品在线视频| 亚洲福利影片在线| 亚洲一区二区中文在线| 日本调教视频在线观看| 深夜宅男网站免费进入| 在线亚洲美日韩| 茄子视频成人在线观看| 国产精品揄拍一区二区| 一区二区三区视频观看| 国产亚洲精品日韩| 好吊日精品视频| 日韩一区二区三区四区五区| 国产三级电影在线| www.欧美日本| 日韩精品电影网站| 国产精品专区第二| 久久久精品日本| 欧美一区二区三区日韩| 亚洲日本va在线观看| 国产精品99久久久久久宅男| 欧美在线播放| 欧美精品国产白浆久久久久| 91av亚洲| 99福利在线| 日本亚洲欧美| jizzjizz中文| 欧美老熟妇喷水| 亚洲精品在线视频观看| 97视频资源在线观看| 97国产精品免费视频| 国产亚洲精品美女久久久久| 欧美日韩精品免费| 亚洲线精品一区二区三区 | 亚洲欧洲自拍| 嫩草在线视频| 中文字幕高清在线观看| 不卡的av中文字幕| 秋霞无码一区二区| 亚洲视频在线二区| 国产免费一区二区三区| 成人精品久久久| 55夜色66夜色国产精品视频| 另类美女黄大片| 自拍偷拍亚洲精品| 亚洲欧美日韩中文视频| 精品1区2区在线观看| 欧美高清性hdvideosex| 色噜噜狠狠成人中文综合 | 久久狠狠亚洲综合| 国产亚洲在线观看| 欧美三级第一页| 97偷自拍亚洲综合二区| 欧美男gay| 亚洲第一福利社区| 欧美日韩麻豆| 欧亚精品一区| 亚洲激情77| 视频一区中文| 国产va免费精品观看精品视频| 九九热hot精品视频在线播放| 亚洲图色一区二区三区| 亚洲天堂中文字幕在线观看| 清纯唯美激情亚洲| 日韩三级av高清片| 天堂精品久久久久| jizz性欧美23| 日本福利一区| 国产精选一区| 日韩欧美高清| 亚洲第一偷拍| 亚洲大胆av| 99精品视频免费观看| 国产精品综合| 日韩综合小视频| 久久99久久久久| 国产激情一区二区三区四区| 成人免费视频播放| 久久这里只精品最新地址| 2023国产一二三区日本精品2022| 国产欧美日韩综合精品一区二区| ...av二区三区久久精品| 亚洲一区免费观看| 在线视频综合导航| 91精品国模一区二区三区| 精品嫩草影院久久| 亚洲欧美综合区自拍另类| 精品国偷自产在线视频| 久久久久久久久久久网站| 久久久噜噜噜久久中文字免| 国产成人精品av在线| 91精品久久久久久久久青青| 高清视频一区| 三区精品视频| 日韩精品福利片午夜免费观看| 福利视频一二区| 午夜大尺度福利视频| 亚亚洲欧洲精品| 黄av在线播放| www.26天天久久天堂| 美腿丝袜亚洲图片| 91精品一区二区三区综合在线爱| 亚洲一区二区毛片| 国产精品一区二区三区99| 国产丝袜欧美中文另类| 亚洲国产精品久久久久婷婷884 | 国产区二区三区| 天堂中文av| 在线国产91| 三级在线观看视频| 国产一区二区| 99久久夜色精品国产亚洲1000部| 久久久久99| 99精品欧美一区二区三区小说 | 国产精品99久久久久久有的能看| 国产日韩在线不卡| 性感美女极品91精品| 日韩一级欧美一级| 日韩中文字幕精品视频| 国产精品7m视频| 你懂的视频在线一区二区| 5月婷婷6月丁香| 中文字幕视频在线| 日本精品600av| 国产精品中文| 66视频精品| 国内精品伊人久久久久av一坑| 国产精品丝袜91| 91福利在线导航| 在线观看国产欧美| 国产精品美女免费| 亚洲精品高清视频| 少妇一级淫免费播放| 日本蜜桃在线观看| 99久久久国产精品免费调教网站| 欧美精选视频在线观看| 人人超碰91尤物精品国产| 中文子幕无线码一区tr| 欧美日韩成人在线一区| 欧美成人免费va影院高清| 国产精品国产精品国产专区不卡| 人人干视频在线| 国产香蕉在线| 欧美日本三级| 亚洲一区二区三区高清| 国产精品三级av在线播放| 91精品免费观看| 欧美性在线观看| 一区二区不卡在线| 色佬视频在线观看| 91另类视频| 在线精品观看| 中文字幕av免费专区久久| 日韩欧美区一区二| 97香蕉超级碰碰久久免费软件| 日韩欧美第二区在线观看| 男人捅女人免费视频| www.超碰在线| 亚洲a在线视频| 99久久婷婷国产综合精品| 欧美三级电影精品| 88xx成人精品| 永久免费看av| 成年人视频在线看| 青草久久视频| 国产成人在线色| 欧美三级电影在线看| 欧美孕妇性xx| 国产精品成人久久电影| 日本三级视频在线观看| 九九久久婷婷| 99精品一区二区三区| 精品久久久久久久久久久久包黑料 | 欧美性videos| 色老板在线视频一区二区| 开心九九激情九九欧美日韩精美视频电影 | 久久99久久99精品| 在线日本视频| 精品一区欧美| 99精品一区二区三区| 日韩精品一区二区三区视频播放| 国产精品揄拍一区二区| 九一国产精品视频| 久久国产精品黑丝| 欧美a级在线| 中文字幕字幕中文在线中不卡视频| 亚洲丝袜在线视频| 久久99九九| 四虎国产精品永远| 伊人成综合网yiren22| 久久久蜜桃精品| 在线视频欧美日韩精品|