当前位置:网站首页 > 编程语言 > 正文

数组合并去重 并排序(数组对象合并去重)



感谢leetcode大佬的题解,真是开眼了

多个重复元素(通用公式)

  • 示例 1:

    输入:nums = [1,1,1,2,2,3]
    输出:5, nums = [1,1,2,2,3]
    解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。

  • 示例 2:

    输入:nums = [0,0,1,1,1,1,2,3,3]
    输出:7, nums = [0,0,1,1,2,3,3]
    解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。

     

一个重复元素

一个重复元素可以跟多个重复元素使用一样的算法,还可以使用双指针或者直接使用list的unique方法去重

 
  

 
  

核心思想–抵消原则: 在一个数组中,如果某个元素的出现次数超过了数组长度的一半,那么这个元素与其他所有元素一一配对,最后仍然会剩下至少一个该元素。 通过“投票”和“抵消”的过程,可以逐步消除不同的元素,最终留下的候选人就是可能的主要元素。

数组排序

 
  

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

  • 示例 1:
    输入: nums = [1,2,3,4,5,6,7], k = 3
    输出: [5,6,7,1,2,3,4]
    解释:
    向右轮转 1 步: [7,1,2,3,4,5,6]
    向右轮转 2 步: [6,7,1,2,3,4,5]
    向右轮转 3 步: [5,6,7,1,2,3,4]





  • 示例 2:
    输入:nums = [-1,-100,3,99], k = 2
    输出:[3,99,-1,-100]
    解释:
    向右轮转 1 步: [99,-1,-100,3]
    向右轮转 2 步: [3,99,-1,-100]




思路: 通过一个中间数组,遍历原数组,将元素放到对应的位置

 
  

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

  • 只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
  • 示例 1:
    输入:[7,1,5,3,6,4]
    输出:5
    解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
    注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。



  • 示例 2:
    输入:prices = [7,6,4,3,1]
    输出:0
    解释:在这种情况下, 没有交易完成, 所以最大利润为 0。


 
  

给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

  • 示例 1:
    输入:nums = [2,3,1,1,4]
    输出:true
    解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。


 
  

更牛的解答:

C++贪心简洁实现,step记录剩余步数,i记录当前位置,当i到达数组末尾或者没有剩余步数停止,最后判断i是否到达数组末尾

 
  
  • 示例 1:
    输入: nums = [2,3,1,1,4]
    输出: 2
    解释: 跳到最后一个位置的最小跳跃数是 2。
    从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。



自己解了半个小时没解出来,还是看了大佬的题解

思路

  1. 如果某一个作为起跳点的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。 可以对每一个能作为起跳点的格子都尝试跳一次,把能跳到最远的距离不断更新。
  2. 如果从这个起跳点起跳叫做第 1 次跳跃,那么从后面 3 个格子起跳都可以叫做第 2 次跳跃。
  3. 所以,当一次跳跃结束时,从下一个格子开始,到现在能跳到最远的距离,都 是下一次跳跃的起跳点。对每一次跳跃用 for 循环来模拟。
到此这篇数组合并去重 并排序(数组对象合并去重)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就! 
  

                            

版权声明


相关文章:

  • 485报文怎么看(485报文怎么抓取)2025-07-12 11:00:08
  • ip反查域名解析(ip 反查域名)2025-07-12 11:00:08
  • ew是什么焊接(wse是什么焊机)2025-07-12 11:00:08
  • atb战斗系统(atb战斗系统有什么特点)2025-07-12 11:00:08
  • 虚拟u盘怎么打开(虚拟u盘怎么打开文件)2025-07-12 11:00:08
  • 重绘你的生命底色歌词(重绘你的生命底色歌词是什么)2025-07-12 11:00:08
  • github ping(github 平替)2025-07-12 11:00:08
  • bigboss源下载慢(bigboss源可以删掉吗)2025-07-12 11:00:08
  • ubuntu换源(Ubuntu换源)2025-07-12 11:00:08
  • ipv6全球单播地址获取不到网关(ipv6全局单播地址范围)2025-07-12 11:00:08
  • 全屏图片