原创 劍指offer-青蛙跳臺階-初級版-Java
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路:假設有n個臺階,res種跳法,n=1 res = 1; n=2,res=2; n=3.res =3; n
原创 劍指offer-變態跳臺階-動態規劃思想-Java
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路:動態規劃 用f(n)表示青蛙跳上n階臺階的跳法數,設定f(0) = 1; 當n = 1 時,只有一種跳的方式,一階跳,f(1) = 1 當n
原创 快速排序和冒泡排序-Java版-面試常問
八大排序裏面經常讓寫的兩個就是快排和冒泡,面試經常會遇到,mark一下。 冒泡,兩個兩個比較,前一個大於後一個,則把大的挪到後面,第一趟有n個元素,需要比較n-1次;第二趟n-1個元素,比較n-2次。所以,內層循環是length-i
原创 劍指offer-7-斐波那契數列-非遞歸-Java
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0,第1項是1)。 n<=39 思路;必須有兩個初始值,不然後面沒法計算,所以0,1這兩個跑不掉。後面的話注意循環時的邊界就行,i<=n的。如
原创 劍指offer-16-翻轉鏈表-Java
思路:遍歷整個鏈表,維護兩個節點pre和next,node.next每次都指向pre,然後這三個點同時向後移動。 public static Node reverseList(Node node){ Node pre = nul
原创 劍指offer-求1+2..+n-Java
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 兩種做法,一種是直接通過公式算,一種是通過&&來實現if條件判斷,並遞歸計算結果。 pu
原创 劍指offer-計算一個數值的n次方
字面意思,看起來很簡單的一件事,最先想到的就是powerWithExponend裏面寫的情況,以爲這就完了。看別人代碼的時候才發現這麼多問題沒有考慮到,先是equal的重定義,後是exponent的取值的三種情況,在後面是base是否取零
原创 劍指offer-數組中只出現一次的數-Java
一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 用hashset存一下元素,hashset不允許重複,重複則添加失敗。遍歷每個元素,向hashset中添加元素,如果添加失敗的話,說明裏面已
原创 (C++)統計字符_給定一個英文字符串,請寫一段代碼找出這個字符串中首先出現三次的那個英文字符
給定一個英文字符串,請寫一段代碼找出這個字符串中首先出現三次的那個英文字符 使用兩種語言 C++,AC了 # include <iostream> # include <string> using namespace std; in
原创 線程池相關-個人總結
線程池的7個參數的理解 ThreadPoolExecutor mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心線程數 maximumPoolSize, // 最大線程
原创 (C++)成績排序:輸入任意(用戶,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。
題目:輸入任意(用戶,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績 都按先錄入排列在前的規則處理。 示例: jack 70 peter 96 Tom 70 smith 67 從高到低
原创 劍指offer-求最大連續子序列和O(n)-Java
給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。 示例: 輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 思路:上來就暴力,不行的。考慮用一個maxsum記錄最大
原创 劍指offer-字符中只出現一次的字母-Java
在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).(從0開始計數) 前兩天剛寫過一個題,統計數組中只出現一次的數字。鏈接在這裏 當時的
原创 劍指offer-數組中出現超過一半的數字-Java
數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。如果不存在則輸出0。 思路:用hashmap存一
原创 劍指offer-兩個棧實現一個隊列-Java
思想比較簡單,隊列先進先出,我們要實現兩個操作,進隊和出隊; 手裏有2個棧,名爲s1,s2。 那麼進隊的時候:只從進s1,即s1.push即可; 出隊的時候:只從s2出。如果s2有元素的話,出棧即可;如果沒有的話,令s1全部元素出棧,放入