LeetCode週期小結12 03

2021-09-02 13:30:31 字數 4292 閱讀 1363

7. 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

輸入: 123

輸出: 321

示例 2:

輸入: -123

輸出: -321

示例 3:

輸入: 120

輸出: 21

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

我的解答

public static int reverse(int x) else 

//轉換回整形

//判斷反轉後是否超出範圍

double test = double.parsedouble(newstr);

if(test>integer.max_value||test0;i--)

//判斷最高位是否為0

while(newstr.charat(0)==0)

return newstr;

}

更優解答

public int reverse(int x) 

return rev;

}

196. 刪除重複的電子郵箱

編寫乙個 sql 查詢,來刪除 person 表中所有重複的電子郵箱,重複的郵箱裡只保留 id 最小 的那個。

編寫乙個 sql 查詢,來刪除 person 表中所有重複的電子郵箱,重複的郵箱裡只保留 id 最小 的那個。

| id | email

| 1 | [email protected]

| 2 | [email protected]

| 3 | [email protected]

id 是這個表的主鍵。

例如,在執行你的查詢語句之後,上面的 person 表應返回以下幾行:

| id | email

| 1 | [email protected]

| 2 | [email protected]

我的解答

delete p2 from person p1, person p2 where p1.email=p2.email and p1.id349. 兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。

示例 1:

輸入: nums1 = [1,2,2,1], nums2 = [2,2]

輸出: [2]

示例 2:

輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]

輸出: [9,4]

說明:輸出結果中的每個元素一定是唯一的。

我們可以不考慮輸出結果的順序。

我的解答

class solution

}}

//根據需求決定去重

list = removerepeat(list);

int result = new int[list.size()];

for (int k = 0; k < list.size(); k++)

return result; }

//去重

public static listremoverepeat(listlist)

}return listnew;

}}

更優解答

class solution 

for (int num : nums2)

}int ret = new int[set2.size()];

int i = 0;

for (int num : set2)

return ret;

}}

14. 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

示例 1:

輸入: [「flower」,「flow」,「flight」]

輸出: 「fl」

示例 2:

輸入: [「dog」,「racecar」,「car」]

輸出: 「」

解釋: 輸入不存在公共字首。

說明:所有輸入只包含小寫字母 a-z 。

我的解答

public static string longestcommonprefix(string strs) 

result = result.substring(0, j);

} return result;

}

更優解答

class solution 

}return i + 1;

}

更優解答 (速度更快)

class solution 

//1、標記重複資料

final int mark = nums[0];

int index = 1 , _index =1,num =0;

while(index20. 有效的括號

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

我的**

public static boolean isvalid2(string s) 

else

}

更優解答

class solution ');

else if (stack.isempty() || stack.pop() != c)

return false;

}return stack.isempty();

} }

495. 提莫攻擊

在《英雄聯盟》的世界中,有乙個叫 「提莫」 的英雄,他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。

你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。

示例1:

輸入: [1,4], 2

輸出: 4

原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。

在第 4 秒開始時,提莫再次攻擊艾希,使得艾希獲得另外 2 秒的中毒時間。

所以最終輸出 4 秒。

示例2:

輸入: [1,2], 2

輸出: 3

原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。

但是在第 2 秒開始時,提莫再次攻擊了已經處於中毒狀態的艾希。

由於中毒狀態不可疊加,提莫在第 2 秒開始時的這次攻擊會在第 3 秒鐘結束。

所以最終輸出 3。

我的解答

class solution else 

}//提莫最後一次攻擊後的中毒時間

poisoning += duration;

return poisoning;

}}

更優解答

class solution 

int res = 0;

int starttime = timeseries[0];

for (int i = 1; i < timeseries.length; ++i)

}res += timeseries[timeseries.length - 1] + duration - starttime;

return res;

}}

LeetCode 120(動態規劃)

給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。例如,給定三角形 2 3,4 6,5,7 4,1,8,3 自頂向下的最小路徑和為11 即,2 3 5 1 11 說明 如果你可以只使用 o n 的額外空間 n 為三角形的總行數 來解決這個問題,那麼你的演算法會很加分。本...

leetcode每日一題120

題目 給定乙個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。相鄰的結點在這裡指的是 下標 與 上一層結點下標 相同或者等於 上一層結點下標 1 的兩個結點。示例 2 3,4 6,5,7 4,1,8,3 最小路徑和 2 3 5 1 11 思路分析 以示例為例子,假設是a,下標...

Servlet生命週期小結

servlet的生命週期從servlet類載入,到建立servlet類例項,servlet的初始化 真正成為乙個servlet 有請求到來,呼叫service方法 主要工作 直到servlet被destroy 1.servlet類載入 1.1 啟動web容器後,容器去尋找應用的部署描述檔案 web....