第277场周赛

第277场周赛,第1张

第277场周赛

第277场周赛

元素计数-朴素遍历

题目描述题解思路题解代码 按符号重排数组

题目描述题解思路题解代码 找出数组中的所有孤独数字-统计计数

题目描述题解思路题解代码

元素计数-朴素遍历 题目描述

给你一个整数数组 nums ,统计并返回在 nums 中同时具有一个严格较小元素和一个严格较大元素的元素数目。

示例 1:

输入:nums = [11,7,2,15]
输出:2
解释:元素 7 :严格较小元素是元素 2 ,严格较大元素是元素 11 。
元素 11 :严格较小元素是元素 7 ,严格较大元素是元素 15 。
总计有 2 个元素都满足在 nums 中同时存在一个严格较小元素和一个严格较大元素。

示例 2:

输入:nums = [-3,3,3,90]
输出:2
解释:元素 3 :严格较小元素是元素 -3 ,严格较大元素是元素 90 。
由于有两个元素的值为 3 ,总计有 2 个元素都满足在 nums 中同时存在一个严格较小元素和一个严格较大元素。

提示:

1 <= nums.length <= 100-105 <= nums[i] <= 105 题解思路

我们找到数组中最大和最小值 依次遍历数组中的每一个数字 如果这个数字比最小值大且比最大值小 则其满足条件

题解代码
class Solution:
    def countElements(self, nums: List[int]) -> int:
        n=len(nums)
        maxx=max(nums)
        minn=min(nums)
        ans=0
        for i in range(n):
            if minn 
按符号重排数组 
题目描述 

给你一个下标从 0 开始的整数数组 nums ,数组长度为 偶数 ,由数目相等的正整数和负整数组成。

你需要 重排 nums 中的元素,使修改后的数组满足下述条件:

任意 连续 的两个整数 符号相反对于符号相同的所有整数,保留 它们在 nums 中的 顺序 。重排后数组以正整数开头。重排元素满足上述条件后,返回修改后的数组。

示例 1:

输入:nums = [3,1,-2,-5,2,-4]
输出:[3,-2,1,-5,2,-4]
解释:
nums 中的正整数是 [3,1,2] ,负整数是 [-2,-5,-4] 。
重排的唯一可行方案是 [3,-2,1,-5,2,-4],能满足所有条件。
像 [1,-2,2,-5,3,-4]、[3,1,2,-2,-5,-4]、[-2,3,-5,1,-4,2] 这样的其他方案是不正确的,因为不满足一个或者多个条件。 

示例 2:

输入:nums = [-1,1]
输出:[1,-1]
解释:
1 是 nums 中唯一一个正整数,-1 是 nums 中唯一一个负整数。
所以 nums 重排为 [1,-1] 。

提示:

2 <= nums.length <= 2 * 105nums.length 是 偶数1 <= |nums[i]| <= 105nums 由 相等 数量的正整数和负整数组成 题解思路

将数组中的正负分别存储到两个数组 再重新合并即可

题解代码
class Solution:
    def rearrangeArray(self, nums: List[int]) -> List[int]:
        zheng=[]
        fu=[]
        for num in nums:
            if num>0:
                zheng.append(num)
            else:
                fu.append(num)
        ans=[]
        for i in range(len(nums)):
            if i%2==0:
                ans.append(zheng[i//2])
            else:
                ans.append(fu[i//2])
        return ans
找出数组中的所有孤独数字-统计计数 题目描述

给你一个整数数组 nums 。如果数字 x 在数组中仅出现 一次 ,且没有 相邻 数字(即,x + 1 和 x - 1)出现在数组中,则认为数字 x 是 孤独数字 。

返回 nums 中的 所有 孤独数字。你可以按 任何顺序 返回答案。

示例 1:

输入:nums = [10,6,5,8]
输出:[10,8]
解释:
- 10 是一个孤独数字,因为它只出现一次,并且 9 和 11 没有在 nums 中出现。
- 8 是一个孤独数字,因为它只出现一次,并且 7 和 9 没有在 nums 中出现。
- 5 不是一个孤独数字,因为 6 出现在 nums 中,反之亦然。
因此,nums 中的孤独数字是 [10, 8] 。
注意,也可以返回 [8, 10] 。

示例 2:

输入:nums = [1,3,5,3]
输出:[1,5]
解释:
- 1 是一个孤独数字,因为它只出现一次,并且 0 和 2 没有在 nums 中出现。
- 5 是一个孤独数字,因为它只出现一次,并且 4 和 6 没有在 nums 中出现。
- 3 不是一个孤独数字,因为它出现两次。
因此,nums 中的孤独数字是 [1, 5] 。
注意,也可以返回 [5, 1] 。

提示:

1 <= nums.length <= 1050 <= nums[i] <= 106 题解思路

我们将数组中的所有数字统计其出现次数 对于出现次数大于1的直接排除

对于出现次数等于1 且相邻元素出现的我们将其记录 并返回

题解代码
class Solution:
    def findLonely(self, nums: List[int]) -> List[int]:
        ans = []
        a = collections.Counter(nums)

        for num in nums:
            if a[num] == 1:
                if (num-1) in a or (num+1) in a:
                    continue
                else:
                    ans.append(num)
        return ans

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存