自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分析一道經(jīng)典的Java算法筆試題

開發(fā) 后端 算法
本文簡要介紹Java算法面試題,主要是為了幫助大家理清基本的思路,這道題對于作者來說,最大的遺憾是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)時沒有吃透。

Java算法程序題:

該公司筆試題就1個,要求在10分鐘內(nèi)作完。

題目如下:用1、2、2、3、4、5這六個數(shù)字,用java寫一個main函數(shù),打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。

Java算法基本思路:

1 把問題歸結(jié)為圖結(jié)構(gòu)的遍歷問題。實際上6個數(shù)字就是六個結(jié)點,把六個結(jié)點連接成無向連通圖,對于每一個結(jié)點求這個圖形的遍歷路徑,所有結(jié)點的遍歷路徑就是***對這6個數(shù)字的排列組合結(jié)果集。

2 顯然這個結(jié)果集還未達到題目的要求。從以下幾個方面考慮:

1. 3,5不能相連:實際要求這個連通圖的結(jié)點3,5之間不能連通, 可在構(gòu)造圖結(jié)構(gòu)時就滿足改條件,然后再遍歷圖。

2. 不能有重復(fù): 考慮到有兩個2,明顯會存在重復(fù)結(jié)果,可以把結(jié)果集放在TreeSet中過濾重復(fù)結(jié)果

3. 4不能在第三位: 仍舊在結(jié)果集中去除滿足此條件的結(jié)果。

采用二維數(shù)組定義圖結(jié)構(gòu),***的代碼是:

  1. import java.util.Iterator;  
  2. import java.util.TreeSet;  
  3.  
  4. public class TestQuestion {  
  5.  
  6. private String[] b = new String[]{"1", "2", "2", "3", "4", "5"};  
  7. private int n = b.length;  
  8. private boolean[] visited = new boolean[n];  
  9. visited =falsh;  
  10. private int[][] a = new int[n][n];  
  11. private String result = "";  
  12. private TreeSet TreeSet = new TreeSet();  
  13.  
  14. public static void main(String[] args) {  
  15. new TestQuestion().start();  
  16. }  
  17.  
  18. private void start() {  
  19. for (int i = 0; i < n; i++) {  
  20. for (int j = 0; j < n; j++) {  
  21. if (i == j) {  
  22. a[i][j] = 0;  
  23. } else {  
  24.     a[i][j] = 1;  
  25. }  
  26. }  
  27. }a[3][5] = 0;  
  28. a[5][3] = 0;  
  29. for (int i = 0; i < n; i++) {  
  30.     this.depthFirstSearch(i);  
  31. }  
  32. Iterator it = set.iterator();  
  33. while (it.hasNext()) {  
  34. String string = (String) it.next();  
  35.  
  36. if (string.indexOf("4") != 2) {  
  37. System.out.println(string);  
  38. }  
  39. }  
  40. }  
  41.  
  42. private void depthFirstSearch(int startIndex) {  
  43. visited[startIndex] = true;  
  44. resultresult = result + b[startIndex];  
  45. if (result.length() == n) {  
  46. TreeSet .add(result);  
  47. }  
  48. for(int j = 0; j < n; j++) {  
  49. if (a[startIndex][j] == 1 && visited[j] == false) {  
  50. depthFirstSearch(j);  
  51. } else {  
  52. continue;  
  53. }  
  54. }  
  55.     resultresult = result.substring(0, result.length() -1);  
  56.     visited[startIndex] = false;  
  57. }  
  58. }  
  59.  

注:郁悶,花了半個多小時才能寫出來,還是看的提示!!!無向圖,學(xué)數(shù)據(jù)結(jié)構(gòu)時對他就不是很感冒

【編輯推薦】

  1. Java連接MySQL中文亂碼處理
  2. 在Java應(yīng)用程序中使用Jfreechart配置
  3. Java虛擬機內(nèi)部構(gòu)成淺析
  4. 淺談Java線程的生命周期
  5. 關(guān)于Java繼承的一些復(fù)習(xí)
責(zé)任編輯:張燕妮 來源: cnblogs
相關(guān)推薦

2009-09-08 17:45:06

CCNA考題

2019-10-21 10:57:56

MySQL算法數(shù)據(jù)庫

2014-04-29 14:58:24

筆試題微軟筆試題

2009-07-07 16:20:31

JSP試題

2015-04-22 12:19:42

JAVAJAVA面試題答案解析

2021-03-02 11:29:50

算法算法分析前端

2021-05-09 19:42:25

筆試題前端算法

2021-04-30 08:22:36

異步求和函數(shù)

2009-08-11 10:12:07

C#算法

2009-08-11 14:59:57

一道面試題C#算法

2009-08-11 15:09:44

一道面試題C#算法

2020-11-11 09:19:37

前端優(yōu)化面試

2023-04-27 09:08:19

JavaScript隱式類型轉(zhuǎn)換

2018-03-06 15:30:47

Java面試題

2018-03-02 08:50:54

Linux面試題offer技巧

2023-02-04 18:24:10

SeataJava業(yè)務(wù)

2020-07-14 16:08:33

數(shù)據(jù)分析Python筆試

2019-08-13 08:43:07

JavaScript前端面試題

2024-10-11 17:09:27

2009-06-15 17:18:25

Java筆試題
點贊
收藏

51CTO技術(shù)棧公眾號