題意:
給你乙個整數陣列arr
,以及a
、b
、c
三個整數。請你統計其中好三元組的數量。
如果三元組(arr[i], arr[j], arr[k])
滿足下列全部條件,則認為它是乙個 好三元組 。
0 <= i < j < k < arr.length
|arr[i] - arr[j]| <= a
|arr[j] - arr[k]| <= b
|arr[i] - arr[k]| <= c
資料範圍:
3 <= arr.length <= 100
0 <= arr[i] <= 1000
0 <= a, b, c <= 1000
思路:簡單的列舉即可
**:
class
solution
return ret;}}
;
題意:
給你乙個由 不同 整數組成的整數陣列arr
和乙個整數k
。
每回合遊戲都在陣列的前兩個元素(即arr[0]
和arr[1]
)之間進行。比較arr[0]
與arr[1]
的大小,較大的整數將會取得這一回合的勝利並保留在位置0
,較小的整數移至陣列的末尾。當乙個整數贏得k
個連續回合時,遊戲結束,該整數就是比賽的贏家 。
返回贏得比賽的整數。
題目資料 保證 遊戲存在贏家。
資料範圍:
2 <= arr.length <= 10^5
1 <= arr[i] <= 10^6
arr所含的整數各不相同
1 <= k <= 10^9
思路:首先按照模擬思路來想,如果比賽進行的次數足夠多,使得陣列中每個元素都被比較了的話,那麼最終留下的整數必定是最大值,而且最大值將一直贏下接下來所有的比賽。明白這一點就好做了,直接模擬思路,從前往後去比較,並記錄目前該元素贏下比賽的次數,如果所有陣列元素都比較過了還沒得出贏家,那麼贏家就是最大值。
**:
class
solution
if(cost == k)
return cur;
}return cur;}}
;
題意:
給你乙個n x n
的二進位制網格grid
,每一次操作中,你可以選擇網格的相鄰兩行進行交換。乙個符合要求的網格需要滿足主對角線以上的格仔全部都是0
。
請你返回使網格滿足要求的最少操作次數,如果無法使網格符合要求,請你返回-1
。
主對角線指的是從(1, 1)
到(n, n)
的這些格仔。
示例
資料範圍:
n == grid.length
n == grid[i].length
1 <= n <= 200
grid[i][j] == 0 or 1
思路:可以看到每一行末尾連續要求的0
的個數是遞減的,比如對於乙個3 × 3
的網格來說,第一行末尾連續的0
的個數需要>= 2
,第二行末尾連續的0
的個數需要>= 1
,那麼放在第一行能滿足的某一行當然放在第二行也滿足條件。所以我們可以從上往下依次貪心地去取離當前第k
行最近的且可以滿足當前這行的條件的grid[i], i >= k
,即末尾連續0
的個數>= n - k - 1
,然後將其向上一直交換至第k
行。
**:
class
solution
int ans =0;
for(
int i =
0; i < n;
++i)
return ans;}}
;
題意:
你有兩個有序且陣列內元素互不相同的陣列nums1
和nums2
。
一條合法路徑定義如下:
選擇陣列nums1
或者nums2
開始遍歷(從下標0
處開始)。從左到右遍歷當前陣列。如果你遇到了nums1
和nums2
中都存在的值,那麼你可以切換路徑到另乙個陣列對應數字處繼續遍歷(但在合法路徑中重複數字只會被統計一次)。
得分定義為合法路徑中不同數字的和。請你返回所有可能合法路徑中的最大得分。
由於答案可能很大,請你將它對10^9 + 7
取餘後返回。
示例
資料範圍:
1 <= nums1.length <= 10^5
1 <= nums2.length <= 10^5
1 <= nums1[i], nums2[i] <= 10^7
nums1 和 nums2 都是嚴格遞增的陣列
思路:我們可以用雙指標+動態規劃
來解這道題。
f1[i]
表示從陣列nums1
下標i
出發可以獲得的最大分數。
f2[i]
表示從陣列nums2
下標i
出發可以獲得的最大分數。
則最終返回結果就是max(f1[0], f2[0]) % (1e9 + 7);
這裡我們需要從後往前遞推,因為路徑是從前往後走的,所以要對f1[i], f2[i]
進行狀態轉移我們需要知道f1[i + 1], f2[i + 1]
,利用雙指標是為了保證切換至另外乙個陣列的時候,可以更新狀態。比如:nums1[i] == nums2[j]
,f1[i], f2[j]
可以通過切換陣列來更新狀態,這時需要保證f1[i], f2[j]
已經計算過不在這點切換陣列的次優路徑。
(這道題的狀態轉移只跟上乙個狀態有關,其實是可以進行狀態壓縮的,有興趣的同學可以試一下。)
**:
typedef
long
long ll;
class
solution
else
if(nums1[k1]
> nums2[k2]
)else
}while
(k1 >=0)
while
(k2 >=0)
return
max(f1[0]
, f2[0]
)% mod;}}
;
能直接睡到11:20我也是醉了,冒著掉分的危險打了這場比賽,最後一題12:00調出來沒趕上,沒仔細看題,重複數字統計了兩次/(ㄒoㄒ)/~~
codeforce的比賽暫時不寫了,翻譯題目好累好累的,主要自己也寫不了多少題,基本都是官方的tutorial的搬運工,卑微。
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...
leetcode周賽 第176場
題目描述 給你乙個 m n 的矩陣 grid,矩陣中的元素無論是按行還是按列,都以非遞增順序排列。請你統計並返回 grid 中 負數 的數目。示例 1 輸入 grid 4,3,2,1 3,2,1,1 1,1,1,2 1,1,2,3 輸出 8 解釋 矩陣中共有 8 個負數。示例 2 輸入 grid 3...
leetcode 第 180 場周賽
大佬都是3 5分鐘一題,而我10分鐘一題,最後一題還不會。qaq 5356.矩陣中的幸運數 給你乙個m n的矩陣,矩陣中的數字各不相同。請你按任意順序返回矩陣中的所有幸運數。幸運數是指矩陣中滿足同時下列兩個條件的元素 class solution object def luckynumbers se...