Day 34 | 1005. Maximize Sum Of Array After K Negations | 134. Gas Station | 135. Candy

该文详细列出了连续多天的LeetCode算法题目,涵盖了数组操作、二叉树构建、链表处理、数据结构操作等多种编程问题,包括最大和的求解、数组排序、链表反转等经典算法题。

Day 1 | 704. Binary Search | 27. Remove Element | 35. Search Insert Position | 34. First and Last Position of Element in Sorted Array
Day 2 | 977. Squares of a Sorted Array | 209. Minimum Size Subarray Sum | 59. Spiral Matrix II
Day 3 | 203. Remove Linked List Elements | 707. Design Linked List | 206. Reverse Linked List
Day 4 | 24. Swap Nodes in Pairs| 19. Remove Nth Node From End of List| 160.Intersection of Two Lists
Day 6 | 242. Valid Anagram | 349. Intersection of Two Arrays | 202. Happy Numbe | 1. Two Sum
Day 7 | 454. 4Sum II | 383. Ransom Note | 15. 3Sum | 18. 4Sum
Day 8 | 344. Reverse String | 541. Reverse String II | 替换空格 | 151.Reverse Words in a String | 左旋转字符串
Day 9 | 28. Find the Index of the First Occurrence in a String | 459. Repeated Substring Pattern
Day 10 | 232. Implement Queue using Stacks | 225. Implement Stack using Queue
Day 11 | 20. Valid Parentheses | 1047. Remove All Adjacent Duplicates In String | 150. Evaluate RPN
Day 13 | 239. Sliding Window Maximum | 347. Top K Frequent Elements
Day 14 | 144.Binary Tree Preorder Traversal | 94.Binary Tree Inorder Traversal| 145.Binary Tree Postorder Traversal
Day 15 | 102. Binary Tree Level Order Traversal | 226. Invert Binary Tree | 101. Symmetric Tree
Day 16 | 104.MaximumDepth of BinaryTree| 111.MinimumDepth of BinaryTree| 222.CountComplete TreeNodes
Day 17 | 110. Balanced Binary Tree | 257. Binary Tree Paths | 404. Sum of Left Leaves
Day 18 | 513. Find Bottom Left Tree Value | 112. Path Sum | 105&106. Construct Binary Tree
Day 20 | 654. Maximum Binary Tree | 617. Merge Two Binary Trees | 700.Search in a Binary Search Tree
Day 21 | 530. Minimum Absolute Difference in BST | 501. Find Mode in Binary Search Tree | 236. Lowes
Day 22 | 235. Lowest Common Ancestor of a BST | 701. Insert into a BST | 450. Delete Node in a BST
Day 23 | 669. Trim a BST | 108. Convert Sorted Array to BST | 538. Convert BST to Greater Tree
Day 24 | 77. Combinations
Day 25 | 216. Combination Sum III | 17. Letter Combinations of a Phone Number
Day 27 | 39. Combination Sum | 40. Combination Sum II | 131. Palindrome Partitioning
Day 28 | 93. Restore IP Addresses | 78. Subsets | 90. Subsets II
Day 29 | 491. Non-decreasing Subsequences | 46. Permutations | 47. Permutations II
Day 30 | 332. Reconstruct Itinerary | 51. N-Queens | 37. Sudoku Solver
Day 31 | 455. Assign Cookies | 376. Wiggle Subsequence | 53. Maximum Subarray
Day 32 | 122. Best Time to Buy and Sell Stock II | 55. Jump Game | 45. Jump Game II


LeetCode 1005. Maximize Sum Of Array After K Negations

Question Link

class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        // 1、Order the array by the absolute value from big to small.
        nums = IntStream.of(nums)
                .boxed()    // Covert the original stream to the boxed Stream
                .sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1))
                .mapToInt(Integer::intValue).toArray();

        int len = nums.length;
        // 2、Traverse from front to back. Do negation and k-- when meeting negative numbers
        for(int i = 0; i < len; i++){
            if(nums[i] < 0 && k > 0){
                nums[i] = -nums[i];
                k--;
            }
        }
        // 3、If k > 0, repeatedly negate the smallest element
        if(k % 2 == 1)
            nums[len - 1] = - nums[len - 1];

        // 4、Sum up
        return Arrays.stream(nums).sum();
    }
}
  • Order the array by the absolute value from big to small.
  • Traverse from front to back. Do negation and k-- when meeting negative numbers
  • If k > 0, repeatedly negate the smallest element
  • Sum up

LeetCode 134. Gas Station

Question Link

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        int curSum = 0;
        int totalSum = 0;
        int index = 0;
        for(int i = 0; i < gas.length; i++){
            curSum += gas[i] - cost[i];
            totalSum += gas[i] - cost[i];
            if(curSum < 0){
                index = i + 1 % gas.length;
                curSum = 0;
            }
        }
        if(totalSum < 0)
            return -1;

        return index;
    }
}
  • If the total gas minus the total consumption, then the car must be able to complete a lap. It demonstrates that the sum of rest gas(gas[i] - cost[i]) in every station must be bigger or equal to 0

LeetCode 135. Candy

Question Link

class Solution {
    public int candy(int[] ratings) {
        int len = ratings.length;
        int[] candyVec = new int[len];
        candyVec[0] = 1;

        // From left to right
        for(int i = 1; i < len; i++)
            candyVec[i] = (ratings[i] > ratings[i-1]) ? candyVec[i-1] + 1 : 1;
        
        // From right to left
        for(int i = len - 2; i >= 0; i--){
            if(ratings[i] > ratings[i+1])
                candyVec[i] = Math.max(candyVec[i], candyVec[i+1] + 1);
        }
        
        return Arrays.stream(candyVec).sum();
    }
}

We used two greedy strategies for this question:

  • Traverse from left to right, only handle the situations the right rating value is larger than the left rating value
  • Traverse from right to left, only handle the situations the left rating value is larger than the right rating value

In this way, we derive the global optimum from the local optimum

要将 `browser.maximize_window()` 改为 **设置浏览器窗口为指定大小**,你可以使用 Selenium 提供的 `set_window_size(width, height)` 方法。 --- ### ✅ 替代代码:设置指定窗口大小 ```python # 将浏览器窗口设置为 宽度 1920 像素,高度 1080 像素 browser.set_window_size(1920, 1080) ``` --- ### 🔍 与 `maximize_window()` 的区别 | 方法 | 效果 | |------|------| | `browser.maximize_window()` | 窗口最大化(全屏到当前屏幕最大尺寸) | | `browser.set_window_size(1920, 1080)` | 设置固定尺寸,适合模拟特定分辨率设备 | --- ### 🧩 完整示例(Selenium 使用) ```python from selenium import webdriver # 初始化浏览器(以 Chrome 为例) browser = webdriver.Chrome() # 打开网页 browser.get("https://www.example.com") # 设置窗口大小为 1920x1080(常见全高清分辨率) browser.set_window_size(1920, 1080) # 后续操作... ``` --- ### 💡 进阶技巧 #### 1. 设置带位置的窗口(同时控制位置和大小) ```python # 设置窗口位置(x=100, y=50)和大小 browser.set_window_position(100, 50) browser.set_window_size(1366, 768) ``` 或者组合成一个方法(推荐): ```python # 先移动再设大小,实现“定位并调整” browser.set_window_rect(x=100, y=50, width=1366, height=768) ``` > ✅ `set_window_rect()` 是更现代的方式,支持一次性设置位置 + 大小。 #### 2. 模拟移动端屏幕大小(响应式测试) ```python # 模拟 iPhone 12 屏幕 browser.set_window_size(390, 844) ``` --- ### ⚠️ 注意事项 - 单位是 **像素(px)** - 实际显示可能受系统缩放比例影响(如 Windows 125% 缩放),Selenium 控制的是“CSS 像素”,不是物理像素 - 如果你希望无头模式下也生效,请确保在启动时设置好视窗大小: ```python from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("--window-size=1920,1080") # 无头模式下设置初始大小 # options.add_argument("--headless") # 可选:隐藏浏览器运行 browser = webdriver.Chrome(options=options) ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值