Re: [閒聊] 每日leetcode

看板Marginalman作者 (JerryChung)時間1年前 (2024/09/14 09:34), 1年前編輯推噓0(003)
留言3則, 3人參與, 1年前最新討論串856/1548 (看更多)
https://leetcode.com/problems/longest-subarray-with-maximum-bitwise-and 2419. Longest Subarray With Maximum Bitwise AND 給一個 n 大小的整數數組 nums 考慮非空子數組 具有最大可能的位元組合值 (bitwise AND) 回傳最長子數組的長度 數組的位元組合值是數組中所有數字的 bitwise AND 子數組是數組中連續的元素序列 Example 1: Input: nums = [1,2,3,3,2,2] Output: 2 Explanation: 最大的是 3 而為 3 的最長子數組是 [3,3] 長度為 2 Example 2: Input: nums = [1,2,3,4] Output: 1 Explanation: 最大的是 4 最常子數組是 [4] 回傳 1 Constraints: 1 <= nums.length <= 10^5 1 <= nums[i] <= 10^6 思路:原本看不懂 問了一下 ChatGPT 看起來就是先找到最大值 再看有幾個最大值 class ... def ... return nums.count(max(nums)) 很明顯的答錯了 再確認一次題目 才知道要連續的才算 那麼就跑一次 nums 找出哪個區段長度最長 Python Code: class Solution: def longestSubarray(self, nums: List[int]) -> int: max_num = max(nums) ans = temp = 0 for num in nums: if num == max_num: temp += 1 else: ans = max(ans, temp) temp = 0 return max(ans, temp) 非最大值就比較一次 ans 跟 temp 最後跑完再比較一次 有空再去想有沒有更好的解法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.52.67 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1726277666.A.626.html

09/14 09:35, 1年前 , 1F
大師
09/14 09:35, 1F
改了一下 最大值不先用 max 求值 改在遍歷時尋找 少了最初的遍歷 快一點點點 class Solution: def longestSubarray(self, nums: List[int]) -> int: max_num = 0 for num in nums: if num > max_num: max_num = num temp = ans = 1 elif num == max_num: temp += 1 else: ans = max(ans, temp) temp = 0 return max(ans, temp) ※ 編輯: JerryChungYC (60.251.52.67 臺灣), 09/14/2024 10:27:10

09/14 10:36, 1年前 , 2F
早早早
09/14 10:36, 2F

09/14 14:19, 1年前 , 3F
大師
09/14 14:19, 3F
文章代碼(AID): #1cvEWYOc (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cvEWYOc (Marginalman)