leetcode刷題指北(2)

2021-08-28 02:34:59 字數 3344 閱讀 8497

9.回文數

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 1:

輸入: 121

輸出: true

思路一:

第一反應轉為字串,遍歷字串首尾是否相等。

class solution 

} return true;

}}

也可以使用字串反轉比較

class solution else

}}

思路二:

反轉一半數字

class solution 

int revertednumber = 0;

while(x > revertednumber)

return x == revertednumber || x == revertednumber/10;

}}

尋找陣列的中心索引

輸入:nums = [1, 7, 3, 6, 5, 6]

輸出: 3

解釋:索引3 (nums[3] = 6) 的左側數之和(1 + 7 + 3 = 11),與右側數之和(5 + 6 = 11)相等。

同時, 3 也是第乙個符合要求的中心索引。

思路一:

以分割點下標對陣列進行迭代,分別計算兩端陣列和。

class solution 

else if(nums[i]>last)

last=nums[i];

}if(max>=2*last) else

}}

加一

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存乙個數字。

你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例 1:

輸入: [1,2,3]

輸出: [1,2,4]

解釋: 輸入陣列表示數字 123。

思路一:

從最後一位按位迭代,如果為9則迭代進製。

class solution else 

} int res=new int[len+1];

res[0]=1;

return res;

}}

楊輝三角

輸入: 5

輸出:[

[1],

[1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]

]思路一:

從第3行開始,除首尾元素外,每個元素是上行依次兩個元素的和。

class solution 

if(lenb>=0)

sum=tmp/2;

} if(sum!=0)

string re=res.reverse().tostring();

return re;

}}

實現strstr()

給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 (從0開始)。如果不存在,則返回 -1。

示例 1:

輸入: haystack = 「hello」, needle = 「ll」

輸出: 2

思路一:迭代,設定flag跳出。

class solution 

if(strs.length==1)

int min = strs[0].length();

for(int i=1;istrs[i].length())

min=strs[i].length();

} int i=1;

boolean flag = true;

for (i = 1; i <= min; i++)

} if (flag == false) else

}if (flag == true && i==min)

} return res;

}}

反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。

示例 1:

輸入: 「hello」

輸出: 「olleh」

思路一:雙向指標

轉成字元陣列,首尾兩指標向里迭代。

class solution 

}

拓展:

句子中單詞反轉。

例如:輸入:「student. a am i」

輸出:「i am a student.」

思路一:反轉兩次

public class solution 

return sb.tostring();

}}

陣列拆分 i

給定長度為 2n 的陣列, 你的任務是將這些數分成 n 對, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得從1 到 n 的 min(ai, bi) 總和最大。

示例 1:

輸入: [1,4,3,2]

輸出: 4

解釋: n 等於 2, 最大總和為 4 = min(1, 2) + min(3, 4).

思路一:排序後只對偶數求和。

class solution 

else if(t移除元素

給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。

元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。

示例 1:

給定 nums = [3,2,2,3], val = 3,

函式應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2

你不需要考慮陣列中超出新長度後面的元素。

思路:快慢指標

class solution else if(nums[j] ==0)

break;

}if(tmp>count)

} return count;

}}

思路二:

一次迭代,如果為1則加一,為0儲存最大值,計數為0重新計數。

class solution 

} return math.max(count, max);

}}

leetcode刷題筆記 2

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

Leetcode刷題日記2

回文數 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 ...

LeetCode刷題經驗2

以下文字 自 leetcode 100 斬!從第 1 題開始,到現在也差不多快一年了,回顧紀念一下。為什麼開始刷題?從大一就知道了 leetcode,但刷題總是三天打魚,兩天曬網,會發現刷過的題,隔一段時間再看還是需要很久才能再想起來,於是就萌發了刷一題總結一題的想法。另一方面,leetcode 上...