【LeetCode】每日一题 2024_12_15 数组大小减半(哈希、排序)

前言

每天和你一起刷 LeetCode 每日一题~

小聊两句

前几天的时候决定每天学点前端,然后总结一个前端速成的必备知识系列,结果学了几天发现前端内容博大精深,一时半会儿是更新不出来了,慢慢积累总结,会有更新的那一天的

LeetCode 启动!

题目:K 次乘运算后的最终数组 I

代码与解题思路

先读题:题目给了一个数组,我们可以选择一个整数的集合并将他们全部删除,让我们求出用最少的集合数将数组删到一半及以下的大小

核心思路:怎么样删的更快?找最大的整数集合依次删除;怎么找到最大的整数集合?用哈希计数;怎么依次删除?排序。

所以,整个流程就是,先计数,再排序,最后依次删除整数集合,达成题目条件返回结果即可,代码如下:

go 复制代码
func minSetSize(arr []int) int {
    nums, sum := make([]int, 100010), 0
    for _, v := range arr {
        nums[v]++
        sum++
    }
    slices.Sort(nums)
    slices.Reverse(nums)
    cnt := sum
    for i, v := range nums {
        cnt -= v
        if cnt <= sum/2 {
            return i+1
        }
    }
    return -1
}

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?

一题一题,积累起来就是一辈子。

相关推荐
橘颂TA28 分钟前
【剑斩OFFER】算法的暴力美学——翻转对
算法·排序算法·结构与算法
叠叠乐30 分钟前
robot_state_publisher 参数
java·前端·算法
hweiyu0040 分钟前
排序算法:冒泡排序
算法·排序算法
brave and determined1 小时前
CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
人工智能·算法·机器学习·ai·开发环境·算子开发·昇腾ai
Dave.B1 小时前
用【vtk3DLinearGridCrinkleExtractor】快速提取3D网格相交面
算法·3d·vtk
一起养小猫1 小时前
LeetCode100天Day1-字符串匹配与Z字形变换
java·leetcode
yaoh.wang1 小时前
力扣(LeetCode) 1: 两数之和 - 解法思路
python·程序人生·算法·leetcode·面试·跳槽·哈希算法
Code Slacker2 小时前
LeetCode Hot100 —— 滑动窗口(面试纯背版)(四)
数据结构·c++·算法·leetcode
brave and determined2 小时前
CANN训练营 学习(day8)昇腾大模型推理调优实战指南
人工智能·算法·机器学习·ai实战·昇腾ai·ai推理·实战记录
总爱写点小BUG2 小时前
打印不同的三角形(C语言)
java·c语言·算法