力扣第 260 場周賽總結

2022-10-10 10:51:13 字數 2527 閱讀 6008

周賽入口:「位元組跳動 & 力扣」聯合主辦 第 260 場周賽

給你乙個下標從 0 開始的整數陣列 nums ,該陣列的大小為 n ,請你計算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。

返回 最大差值 。如果不存在滿足要求的 i 和 j ,返回 -1 。

示例 1:

輸入:nums =

[7,1,5,4]

輸出:4

解釋:最大差值出現在 i =

1 且 j =

2 時,nums[j] - nums[i]

=5 - 1

=4 。

注意,儘管 i =

1 且 j =

0 時 ,nums[j] - nums[i]

=7 - 1=6

>

4 ,但 i > j 不滿足題面要求,所以 6 不是有效的答案。

示例 2:

輸入:nums =

[9,4,3,2]

輸出:-1

解釋:不存在同時滿足 i < j 和 nums[i]

< nums[j] 這兩個條件的 i, j 組合。

示例 3:

輸入:nums =

[1,5,2,10]

輸出:9

解釋:最大差值出現在 i =

0 且 j =

3 時,nums[j] - nums[i]

=10 - 1

=9 。

n == nums.length

2<

= n <

=1000

1<

= nums[i]

<

=109

思路

第一道題,根據提示中給出的資料量:陣列長度不超過1000,因此可以直接使用暴力求解:對所有資料進行比較,找出最大差值。

class

solution}}

return ans;}}

;

給你乙個下標從 0 開始的二維陣列 grid ,陣列大小為 2 x n ,其中 grid[r][c] 表示矩陣中 (r, c) 位置上的點數。現在有兩個機械人正在矩陣上參與一場遊戲。

兩個機械人初始位置都是 (0, 0) ,目標位置是 (1, n-1) 。每個機械人只會 向右 ((r, c) 到 (r, c + 1)) 或 向下 ((r, c) 到 (r + 1, c)) 。

遊戲開始,第乙個 機械人從 (0, 0) 移動到 (1, n-1) ,並收集路徑上單元格的全部點數。對於路徑上所有單元格 (r, c) ,途經後 grid[r][c] 會重置為 0 。然後,第二個 機械人從 (0, 0) 移動到 (1, n-1) ,同樣收集路徑上單元的全部點數。注意,它們的路徑可能會存在相交的部分。

第乙個 機械人想要打擊競爭對手,使 第二個 機械人收集到的點數 最小化 。與此相對,第二個 機械人想要 最大化 自己收集到的點數。兩個機械人都發揮出自己的 最佳水平 的前提下,返回 第二個 機械人收集到的 點數 。

示例:

輸入:grid =[[

2,5,

4],[

1,5,

1]]輸出:4

解釋:第乙個機械人的最佳路徑如紅色所示,第二個機械人的最佳路徑如藍色所示。

第乙個機械人訪問過的單元格將會重置為 0 。

第二個機械人將會收集到 0+0

+4+0

=4 個點。

grid.length ==

2n == grid[r]

.length

1<= n <=5*

1041

<= grid[r]

[c]<=

105

思路

當看到網格時,想起來之前寫過的不同路徑系列題,再一看數量級到了 10 ^ 4,想嘗試一次動態規劃,大致的思路是:讓第乙個機械人獲得最優解,將第乙個機械人走過的路徑全部置零後,剩下第二個機械人再次以同樣的演算法獲得的最優解。

不過事實說明這個方法是錯誤的,最後被迫放棄。

注意到網格只有兩行,所以第乙個機械人需要選擇的實際上就是從哪一列向下。在它確定了向下的那一列之後,第二個機械人要麼只能拿到第二行開始部分的分數,要麼只能拿到第一行結尾部分的分數。

因此我們列舉第乙個機械人向下的列即可,過程中需要維護第二行的字首和和第一行的字尾和。

class

solution

long

long ans = right;

for(

int i =

1; i < n;

++i)

return ans;}}

;

後面兩題沒有做,先到這裡吧。

力扣第165場周賽

a 和 b 在乙個 3 x 3 的網格上玩井字棋。井字棋遊戲的規則如下 玩家輪流將棋子放在空方格 上。第乙個玩家 a 總是用 x 作為棋子,而第二個玩家 b 總是用 o 作為棋子。x 和 o 只能放在空方格中,而不能放在已經被占用的方格上。只要有 3 個相同的 非空 棋子排成一條直線 行 列 對角線...

力扣第 202 場周賽

傳送門 5185 存在連續三個奇數的陣列 給你乙個整數陣列 arr,請你判斷陣列中是否存在連續三個元素都是奇數的情況 如果存在,請返回 true 否則,返回 false 示例 1 輸入 arr 2,6,4,1 輸出 false 解釋 不存在連續三個元素都是奇數的情況。示例 2 輸入 arr 1,2,...

力扣第 221 場周賽

class solution def halvesarealike self,s str bool score a e i o u a e i o u a s len s 2 b s len s 2 sa 0for ch in a if ch in score sa 1 sb 0for ch in ...