原创 劍指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全部元素出棧,放入