摘要:面試題從尾到頭打印鏈表輸入一個鏈表,從尾到頭打印鏈表每個節(jié)點的值面試題重建二叉樹輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹并返回。隊列中的元素為類型。其中負數(shù)用補碼表示。
面試題2 單例(之前有整理,略) 面試題3 二維數(shù)組中的查找
public boolean find(int target, int [][] array) { boolean found = false; if(array == null || array.length == 0){ return false; } int rows = array.length; int columns = array[0].length; if(rows > 0 && columns > 0){ int row = 0; int column = columns - 1; while(row < rows && column >= 0){ if(array[row][column] == target){ found = true; break; }else if(array[row][column] > target){ column--; }else{ row++; } } } return found; }面試題 4 替換空格
請實現(xiàn)一個函數(shù),將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy。
public String replaceSpace(StringBuffer str) { if(str == null){ return null; } int spaceCount = 0; int length = str.length(); for(int i = 0; i < length; i++){ if(str.charAt(i) == " "){ spaceCount++; } } int newLength = length + 2 * spaceCount; char[] newStr = new char[newLength]; for(int i = length - 1; i >= 0; i--){ if(str.charAt(i) == " "){ newStr[--newLength] = "0"; newStr[--newLength] = "2"; newStr[--newLength] = "%"; }else{ newStr[--newLength] = str.charAt(i); } } return new String(newStr); }面試題5 從尾到頭打印鏈表
輸入一個鏈表,從尾到頭打印鏈表每個節(jié)點的值
public ArrayList面試題6 重建二叉樹printListFromTailToHead(ListNode listNode) { if(listNode == null){ return new ArrayList(); } Stack stack = new Stack<>(); ArrayList res = new ArrayList<>(); while(listNode != null){ stack.push(listNode); listNode = listNode.next; } while(!stack.isEmpty()){ ListNode cur = stack.pop(); res.add(cur.val); } return res; }
輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復的數(shù)字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。
public TreeNode reConstructBinaryTree(int [] pre,int [] in) { if(pre.length == 0 || in.length == 0){ return null; } TreeNode root = new TreeNode(pre[0]); int len = pre.length; int inorderPos = 0; for(;inorderPos < in.length; inorderPos++){ if(in[inorderPos] == root.val){ break; } } int leftTreeLength = inorderPos; int[] leftInorder = new int[leftTreeLength]; int[] leftPre = new int[leftTreeLength]; for(int i = 0; i < leftTreeLength; i++){ leftInorder[i] = in[i]; leftPre[i] = pre[i + 1]; } int rightTreeLength = len - leftTreeLength - 1; int[] rightInorder = new int[rightTreeLength]; int[] rightPre = new int[rightTreeLength]; for(int i = 0; i < rightTreeLength; i++){ rightInorder[i] = in[inorderPos + 1 + i]; rightPre[i] = pre[leftTreeLength + 1 + i]; } TreeNode left = reConstructBinaryTree(leftPre, leftInorder); TreeNode right = reConstructBinaryTree(rightPre, rightInorder); root.left = left; root.right = right; return root; }面試題7
用兩個棧來實現(xiàn)一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
Stack面試題8 旋轉(zhuǎn)數(shù)組中的最小數(shù)字stack1 = new Stack (); Stack stack2 = new Stack (); public void push(int node) { stack1.push(node); } public int pop() { if(stack2.isEmpty()){ while(!stack1.isEmpty()){ int cur = stack1.pop(); stack2.push(cur); } } return stack2.pop(); }
把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。 輸入一個非遞減排序的數(shù)組的一個旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。 例如數(shù)組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉(zhuǎn),該數(shù)組的最小值為1。 NOTE:給出的所有元素都大于0,若數(shù)組大小為0,請返回0。
public int minNumberInRotateArray(int [] array) { if(array == null || array.length == 0){ return 0; } int length = array.length; int index1 = 0; int index2 = length - 1; int indexMid = index1; while(array[index1] >= array[index2]){ if(index2 - index1 == 1){ indexMid = index2; break; } System.out.println(index1 + " ***** " + index2); indexMid = (index1 + index2) / 2; if(array[index1] == array[index2] && array[indexMid] == array[index1]){ return minInOrder(array, index1, index2); } if(array[indexMid] >= array[index1]){ index1 = indexMid; }else if(array[indexMid] <= array[index2]){ index2 = indexMid; } } return array[indexMid]; } public int minInOrder(int[] array, int index1, int index2){ int result = array[index1]; for(int i = index1 + 1; i <= index2; i++){ if(result > array[i]){ result = array[i]; } } return result; }面試題9 斐波那契數(shù)列
大家都知道斐波那契數(shù)列,現(xiàn)在要求輸入一個整數(shù)n,請你輸出斐波那契數(shù)列的第n項。
n<=39
public int fibonacci(int n) { int[] res = new int[]{0, 1}; if(n < 2){ return res[n]; } int fibN = 0; int fibNMinusOne = 1; int fibNMinusTwo = 0; for(int i = 2; i <= n; i++){ fibN = fibNMinusOne + fibNMinusTwo; fibNMinusTwo = fibNMinusOne; fibNMinusOne = fibN; } return fibN; }面試題10 二進制中1的個數(shù)
輸入一個整數(shù),輸出該數(shù)二進制表示中1的個數(shù)。其中負數(shù)用補碼表示。
public int numberOf1(int n) { int count = 0; int flag = 1; while(flag != 0){ if((n & flag) != 0){ count++; } flag = flag << 1; } return count; }面試題11 數(shù)值的整數(shù)次方
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67518.html
摘要:我們是一個大型開源社區(qū),旗下群共余人,數(shù)量超過個,網(wǎng)站日超過,擁有博客專家和簡書程序員優(yōu)秀作者認證。我們組織公益性的翻譯活動學習活動和比賽組隊活動,并和等國內(nèi)著名開源組織保持良好的合作關系。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 我們是一個...
摘要:請回復這個帖子并注明組織個人信息來申請加入。版筆記等到中文字幕翻譯完畢后再整理。數(shù)量超過個,在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。主頁歸檔社區(qū)自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權(quán),請聯(lián)系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...
??前面的話?? 大家好!這是Java基礎知識與數(shù)據(jù)結(jié)構(gòu)博文的導航帖,收藏我!學習Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關注?點贊?收藏??留言? ?本文由未見花聞原創(chuàng),CSDN首發(fā)! ?首發(fā)時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠方! ?參考書籍:?《Java核心技術卷1》,?《Java核心技術卷2》,?《Java編程思想》 ?參考在線編程網(wǎng)站:?牛...
摘要:請回復這個帖子并注明組織個人信息來申請加入。權(quán)限分配靈活,能者居之。數(shù)量超過個,在所有組織中排名前。網(wǎng)站日超過,排名的峰值為。導航歸檔社區(qū)自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權(quán),請聯(lián)系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...
閱讀 2738·2021-10-11 10:57
閱讀 1569·2021-09-26 09:55
閱讀 1310·2021-09-06 15:11
閱讀 3447·2021-08-26 14:16
閱讀 662·2019-08-30 15:54
閱讀 535·2019-08-30 12:43
閱讀 3290·2019-08-29 16:18
閱讀 2565·2019-08-23 16:14