劍指Offer系列之題46 題50

2022-01-23 22:33:10 字數 2098 閱讀 4816

目錄從撲克牌隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2~10為數字本身,a為1,j為11,q為12,k為13,而大、小王可以看成任意數字。

找出最大最小值,0的數量,判斷最大最小值的差中的空缺數是否小於等於0的個數

1.快排:

快排超時,使用arrays.sort(numbers);

public class solution 

}int diff=max-min-(numbers.length-count-1);

return diff<=count;

}}

0,1,…,n-1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個數字,求出這個圓圈裡剩下的最後乙個數字。

約瑟夫環。找到規律然後遞迴/迴圈;利用迴圈鍊錶

\[約瑟夫環的公式:

f(n,m)=

\begin

0, &n=1\\

[f(n-1,m)+m]\%n, &n>1

\end

\]1.迴圈:

public class solution 

return last;

}}

2.遞迴:

public class solution 

}

3.迴圈鍊錶:

陣列模擬環。考慮每個變數的作用,考慮環如何表達等因素。

public class solution 

}return i;//返回跳出迴圈時i的值,即最後乙個數字的索引

}}

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(a ? b:c)。

當這些操作不可用時,可以考慮短路操作當作遞迴退出條件。

短路+遞迴:

&&||都可以

public class solution 

}

寫乙個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算符號。

利用位運算。其中異或得到沒有進製時的和,得到都為1的位,與左移一位得到進製,最後相加(直到沒有進製時)得到和。

1.位運算:

public class solution 

return num1;

}}

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0

輸入描述:輸入乙個字串,包括數字字母符號,可以為空

輸出描述:如果是合法的數值表達則返回該數字,否則返回0

遍歷,依次相加組成結果。中間需要注意越界,符號等因素

1.遍歷:

public class solution else if(str.charat(0)=='+')

long res=0;//long表達,防止越界

for(int i=0;i57)//若不是純數字

return 0;

res+=(c-'0')*math.pow(10,str.length()-i-1);//轉化為整型

}if(!flag)

if(res>integer.max_value || res如有錯誤,歡迎指正

劍指offer 題5 替換空格

題目 首先拿到題目,第一感覺就是乙個 空格 變成了 20 那字串長度肯定變長啊 所以我第一反應是建立新的字串b,然後從a乙個個讀取字元,遇到 空格 就用 20 來替代,只要b空間足夠,遍歷一遍就成了。但是,面試再簡單也不是考這種題目。於是這時候面試官可能會講了 要求在原來的字串上進行操作 這時候問題...

劍指Offer系列刷題筆記彙總

本系列文章為 劍指offer 刷題筆記。刷題平台 牛客網 刷題刷的比較慢,花費了兩個多月,終於將所有題目過了一遍,牛客網一共有66道題,這次刷題主要使用c 接下來會使用python重新過一遍,並對這些寫過的文章進行更新。同時,也會重新開始刷leetcode。github專案 分類二一 線性表 1 陣...

劍指Offer系列刷題筆記彙總

劍指offer 二 替換空格 劍指offer 二十七 字串的排列 劍指offer 三十四 第乙個只出現一次的字元 劍指offer 四十三 左旋轉字串 劍指offer 四十四 翻轉單詞順序序列 劍指offer 四十九 把字串轉換成整數 劍指offer 五十二 正規表示式匹配 劍指offer 五十三 表...