原创 劍指offer(43)-孩子們的遊戲(圓圈中最後剩下的數)

題目描述 每年六一兒童節,NowCoder都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作爲NowCoder的資深元老,自然也準備了一些小遊戲。其中,有個遊戲是這樣的:首先,讓小朋友們圍成一個大圈。然後,他隨機指定一

原创 劍指offer(45)-不用加減乘除做加法

題目描述 寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。 解題思路 首先看十進制是如何做的:5+7 = 12,三步走 第一步:相加各位的值,不算進位,得到2 第二步:計算進位值,得到10,如

原创 劍指offer(47)-數組中重複的數字

題目描述 在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2

原创 劍指offer(44)-求1+2+3+...+n

題目描述 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 解題思路 需利用邏輯與的短路特性實現遞歸終止。 當n==0時,(n>0)&

原创 劍指offer(49)-正則表達式匹配

題目描述 請實現一個函數用來匹配包括’.’和’‘的正則表達式。模式中的字符’.’表示任意一個字符,而’‘表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串”aaa”與模式”

原创 劍指offer(39)-和爲S的兩個數字

題目描述 輸入一個遞增排序的數組和一個數字S,在數組中查找兩個數,使得他們的和正好是S,如果有多對數字的和等於S,輸出兩個數的乘積最小的。 代碼 class Solution { public: vector<int

原创 劍指offer(46)-把字符串轉換成整數

題目描述 將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 解題思路 首先有可能有正負號,也有可能沒有 當輸入字符串中有非數字的時候輸出爲0 代碼 class Solution { public:

原创 iOS NSString retainCount遇到的問題

NSString的內存管理 昨天做了一道面試題,第一題就是關於NSString的內存管理的,直接上代碼。 現有如下person.m文件,請寫出test方法執行後的輸出。 @interface Parent : NSObject

原创 劍指offer(35)-二叉樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 代碼 /* struct TreeNode { int val; struct

原创 回答bestswifter的BAT面試問題

寫這篇文章的主要目的是記錄下bestswifter的BAT的面試問題,補充下自己的面試經驗,bestswifer的面經請看BAT面試指南。 百度 算法 不用臨時變量怎麼實現 swap(a, b)? 異或運算符^也稱XOR運

原创 劍指offer(40)-左旋轉字符串

題目描述 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環

原创 八大排序算法

部分參考 八大排序算法。 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這裏說說八大排序就是內部排序。 當n較

原创 劍指offer(37)-數組中只出現一次的數字

題目描述 一個整型數組裏除了兩個數字之外,其他的數字都出現了兩次。請寫程序找出這兩個只出現一次的數字。 代碼 class Solution { public: void FindNumsAppearOnce(vecto

原创 劍指offer(41)-翻轉單詞順序列

題目描述 牛客最近來了一個新員工Fish,每天早晨總是會拿着一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“student. a am I”。後來才意

原创 劍指offer(38)-和爲S的連續正數序列

題目描述 輸出所有和爲S的連續正數序列。序列內按照從小至大的順序,序列間按照開始數字從小到大的順序 代碼 class Solution { public: int sumNumber(int small,int big