[杨小白]_leetcode_力扣第 315 场周赛-力扣-第一题

135 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情

前言

小白算法比较菜,希望能激励我每日更新,从leetcode第一题开始,2022年目标300题,记录从0到1的全过程!!

力扣第 315 场周赛-力扣

力扣第 315 场周赛-力扣

a了三题,第一题第二题比较简单,几分钟就做了。第三题没想到暴力可以过,真是想了半天,还wa了一次。第四题坐牢。

因为第三题耽误太长时间,排名贼靠后,又要掉分了!!

image.png

第314双周赛的排名 image.png

第88双周赛的排名 image.png

第313周赛的排名

image.png

2441. 与对应负数同时存在的最大正整数

给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。

返回正整数 k ,如果不存在这样的整数,返回 -1 。

示例 1

  • 输入: nums = [-1,2,-3,3]
  • 输出: 3
  • 解释: 3 是数组中唯一一个满足题目要求的 k 。

示例 2

  • 输入: nums = [-1,10,6,7,-7,1]
  • 输出: 7
  • 解释: 数组中存在 1 和 7 对应的负数,7 的值更大。

示例 3

  • 输入: nums = [-10,8,6,7,-2,-3]
  • 输出: -1
  • 解释: 不存在满足题目要求的 k ,返回 -1 。

提示

  • 1 <= nums.length <= 1000
  • -1000 <= nums[i] <= 1000
  • nums[i] != 0

代码

两个做法

一是排序后,双指针,当nums[l]+num[r] = x,x小于0时,左指针右移,x大于0时候,右指针左移。

时间复杂度0(nlogn) 空间复杂度O(1)

方法二,哈希表,没什么复杂的,直接暴力搜就行了。

//双指针
class Solution {
    public int findMaxK(int[] nums) {
        Arrays.sort(nums);
        int l = 0;
        int r = nums.length - 1;
        while(l < r) {
            if(nums[l] + nums[r] == 0) {
                return nums[r];
            } else if(nums[l] + nums[r] > 0) {
                r--;
            } else {
                l++;
            }
        }
        return -1;
    }
}

//哈希表
class Solution:
    def findMaxK(self, nums: List[int]) -> int:
        ans = -1
        s = set()
        for x in nums:
            if -x in s: ans = max(ans, abs(x))
            s.add(x)
        return ans

第二题连接如下-2442.反转之后不同整数的数目

2442.反转之后不同整数的数目

第三题连接如下-2443.反转之后数字和

2443.反转之后数字和

3.结束

又是掉分的一场周赛,第三题不应该困扰那么长时间的。我当时看好多人都做出来了,想的是,是不是直接return false或者是什么啊,还wa了一次。gogogo,刷题刷题,每天一道,三年1000道!!!!