【每日刷题】Day67

【每日刷题】Day67

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 23. 合并 K 个升序链表 - 力扣(LeetCode)

2. 1189. “气球” 的最大数量 - 力扣(LeetCode)

3. 1207. 独一无二的出现次数 - 力扣(LeetCode)

1. 23. 合并 K 个升序链表 - 力扣(LeetCode)

//思路:记数排序。遍历K个链表,将每个元素出现的次数在以该元素为下标的位置记录于数组中。遍历数组,将所有下标不为0的下标元素链接为新链表。

typedef struct ListNode LN;

struct ListNode* mergeKLists(struct ListNode** lists, int listsSize)

{

    if(!listsSize)

        return NULL;

    int count[20002] = {0};

    for(int i = 0;i<listsSize;i++)

    {

        LN* tmp = lists[i];

        while(tmp)

        {

             //将每个元素出现的次数在以该元素为下标的位置记录

            count[tmp->val+10000]+=1;//由于链表元素取值为-10^4~10^4,因此这里需要将负数全部更正为正数。

            tmp = tmp->next;

        }

    }

    LN* newhead = (LN*)malloc(sizeof(LN));

    newhead->next = NULL;

    LN* ptail = newhead;

    for(int i = 0;i<20001;i++)

    {

        while(count[i])//将所有元素链接为新链表

        {

            LN* node = (LN*)malloc(sizeof(LN));

            node->val = i-10000;

            node->next = NULL;

            ptail->next = node;

            ptail = ptail->next;

            count[i]--;

        }

    }

    if(!newhead->next)

        return NULL;

    return newhead->next;

}

2. 1189. “气球” 的最大数量 - 力扣(LeetCode)

//思路:哈希表。记录text中每个元素的个数,判断能组成多少个balloon。

int maxNumberOfBalloons(char* text)

{

    int hash[27] = {0};

    for(int i = 0;i<strlen(text);i++)

    {

        hash[text[i]-'a']+=1;//记数

    }

    int ans = 0;

    char* s = "balloon";

    int min = INT_MAX;//当'b'、'a'、'l'、'o'、'n'有一个单词用完后,就无法继续组成balloon,min用于判断是否有单词用完

    while(min)

    {

        int i = 0;

        for(i = 0;i<strlen(s);i++)

        {

            if(hash[s[i]-'a']<min)//找用完的单词

                min = hash[s[i]-'a'];

            if(hash[s[i]-'a']==0)//单词用完无法组成,直接跳出循环,保留当前i的值,用于判断是否组成了一个balloon

                break;

            hash[s[i]-'a']--;

        }

        if(i==strlen(s))//组成balloon后ans++

            ans++;

    }

    return ans;

}

3. 1207. 独一无二的出现次数 - 力扣(LeetCode)

//思路:哈希表+排序+前后指针一次遍历。将数组中每个数的出现次数记录,并将其排序。排序后出现次数相同的一定是相邻的。前后指针遍历排序后的哈希表,找到相同的元素且不为0,return false;否则,出循环return true。

//记数排序

//采用记数排序是因为记数排序在面对数组中存在多个重复数据时速度更快

void CountSort(int* arr, int n)

{

    int min = 0;

    int max = 0;

    for (int i = 0; i < n; i++)

    {

        if (arr[i] < arr[min])

            min = i;

        if (arr[i] > arr[max])

            max = i;

    }

    int x = arr[min];

    int y = arr[max];

    int* tmp = (int*)calloc(y - x + 1, sizeof(int));

    for (int i = 0; i < n; i++)

    {

        tmp[arr[i] - x] += 1;

    }

    int count = 0;

    for (int i = 0; i < (y - x + 1); i++)

    {

        while (tmp[i])

        {

            arr[count++] = i + x;

            tmp[i]--;

        }

    }

}



 

bool uniqueOccurrences(int* arr, int arrSize)

{

    int hash[2002] = {0};

    for(int i = 0;i<arrSize;i++)

    {

        hash[arr[i]+1000]+=1;//记录每个元素出现的次数

    }

    CountSort(hash,2002);//排序

    for(int i = 0;i<2001;i++)

    {

        if(hash[i]==hash[i+1]&&hash[i])//遇到不是独一无二的return false。

            return false;

    }

    return true;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全 - kali 安装

文章目录 Kali 安装教程下载镜像 Kali 安装教程 下载镜像 kali-images安装包下载_开源镜像站-阿里云 (aliyun.com) 下载对应镜像&#xff08;自己挑&#xff09; 打开本机 cmd 并输入一下命令 ipconfig找到 NAT 模式的 IP 地址并从虚拟机中 ping

6月15号作业

使用手动连接&#xff0c;将登录框中的取消按钮使用第二中连接方式&#xff0c;右击转到槽&#xff0c;在该槽函数中&#xff0c;调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0…

一键掌控,4G红外插座引领智能生活新潮流!

随着科技的进步&#xff0c;市场上出现大量带语音、手机APP可控制的智能插座产品&#xff0c;由此可看出客户对产品的功能要求也越来越高&#xff0c;追求舒适的体验感&#xff0c;特别是对操控性的要求越来越高。但是目前大部分红外遥控插座均为WiFi插座类型&#xff0c;WiFi红…

gitlab仓库中用git bash生成不是默认路径的ssh秘钥

使用命令 ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 会在默认路径生成秘钥&#xff0c;&#xff08;C:\Users\用户\.ssh\&#xff09; 想要修改默认路径使用如下命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com"…

【吉林大学Java程序设计】第11章:网络编程技术

第11章&#xff1a;网络编程技术 1.网络协议概述2.网络类及应用&#xff08;1&#xff09;InetAddress类&#xff08;2&#xff09;ServerSocket类&#xff08;3&#xff09;Socket类基于TCP的点对点通信基于TCP的点对面通信&#xff08;一个服务器&#xff0c;多个客户端&…

如何通过数据库与AI实现以图搜图?OceanBase向量功能详解

OceanBase支持向量数据库的基础能力 当前&#xff0c;数据库存储系统与人工智能技术的结合&#xff0c;可以体现在两个主要的应用方向上。 一、近似搜索。它利用大语言模型&#xff08;LLM&#xff0c;简称大模型&#xff09;的嵌入&#xff08;embedding&#xff09;技术&am…

环境科学SCI期刊,IF=8.5+,期刊发展势头非常好

一、期刊名称 SUSTAINABLE DEVELOPMENT 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;环境科学与生态学 影响因子&#xff1a;8.562 中科院分区&#xff1a;2区 三、期刊征稿范围 该期刊是一本跨学科出版物&#xff0c;旨在解决和讨论实现可持续发展的…

硬件开发笔记(十八):核心板与底板之间的连接方式介绍说明:板对板连接器

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139663096 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

最佳Google Chrome扩展和Mozilla Firefox扩展自动解决验证码

在这个信息爆炸的时代&#xff0c;我们每天都要处理大量的在线内容&#xff0c;验证码已成为不可避免的挑战。尽管它们旨在保护网站安全&#xff0c;但也常常成为我们获取信息的障碍。那么&#xff0c;有没有更简单的方法绕过这些验证码呢&#xff1f;答案是肯定的。通过使用一…

算法之分治

分而治之 分治法所能解决的问题一般具有以下几个特征&#xff1a; 1) 该问题的规模缩小到一定的程度就可以容易地解决 2) 该问题可以分解为若干个规模较小的子问题&#xff0c;即该问题具有最优子结构性质 3) 利用该问题分解出的子问题的解可以合并为该问题的解 4) 该问题所分…

ubuntu gitlab 部署 私有git库

我的版本 ubuntu-22.04.2-live-server-amd64 GitLab 社区版 v17.0.1 注意剩余硬盘需要3GB以上 一、更新软件 sudo apt update二、gitLab 需要一些依赖项才能正常运行 sudo apt install -y curl openssh-server ca-certificates postfix1、出现邮件 选择 “Internet Site”并…

数据库原理(关系数据库规范化理论)——(4)

一、关系模式规范化的必要性 1.关系可能出现的问题 数据冗余大&#xff1b;插入异常&#xff1b;删除异常&#xff1b;更新异常&#xff1b; 2.关系模式应满足的基本要求 元组的每个分量必须是不可分割的数据项&#xff1b;数据库中的数据冗余应尽可能少&#xff1b;不要出…

Neo4j Desktop界面认识以及数据库备份与还原

Neo4j Desktop界面认识以及数据库备份与还原 neo4j 版本信息&#xff1a;Neo4j Desktop Version 1.5.9&#xff1b;neo4j 5.12.0 系统信息&#xff1a;windows 11 Neo4j Desktop 界面 每个 Project 下可以有多个 DBMS&#xff0c;而每个 DBMS 中默认有 system 和 neo4j (def…

SQL Server中CROSS APPLY连接操作

在 SQL Server 中&#xff0c;CROSS APPLY 是一个连接操作&#xff0c;它类似于 INNER JOIN&#xff0c;但有一些关键差异&#xff0c;特别是在处理表值函数&#xff08;TVF&#xff09;、行集函数或子查询时。CROSS APPLY 返回对于外部查询中的每一行&#xff0c;在内部查询或…

LabVIEW_OPC读取PLC数据

使用OPCDemo_西门子 Demo位置Program Files \ National Instruments \ Shared \ NI OPC Servers \ V5 \ Projects \ simdemo.opf. 使用共享变量的方式读取数据 1.Labview项目中新建IO服务器 选择OPC Client 选择NI OPC Server Labview会创建一个Lib库对OPC客户端进行管理。…

记录一个利用winhex进行图片隐写分离的

前提 是一次大比武里面的题目&#xff0c;属实给我开了眼&#xff0c;跟我之前掌握的关于隐写合并的操作都不一样。 它不是直接在文件里面进行输入文件隐写&#xff0c;叫你输入密码&#xff0c;或者更改颜色&#xff0c;或者偏移位置&#xff1b; 它不是单纯几个文件合并&a…

522. 最长特殊序列 II(Rust)

题目 给定字符串列表 strs &#xff0c;返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在&#xff0c;返回 -1 。 特殊序列 定义如下&#xff1a;该序列为某字符串 独有的子序列&#xff08;即不能是其他字符串的子序列&#xff09;。 s 的 子序列可以通过删去字符串…

基于SpringBoot校园食堂订餐管理系统

文章目录 系统运行图概要整体架构流程技术名词解释 系统运行图 概要 随着校园人口的增加和生活节奏的加快&#xff0c;校园食堂的订餐管理面临着诸多挑战&#xff0c;传统的人工点餐方式已经不能满足日益增长的需求和期望。因此&#xff0c;本论文旨在设计和实现一种基于Java的…

过滤器和拦截器的基本知识

过滤器和拦截器的基本知识 前提提要&#xff0c;由于过滤器和拦截器的相关函数是没有返回值的&#xff0c;所以我们像前端返回数据时需要使用到HttpServletResponse中的相关函数&#xff0c;且需要配合阿里巴巴的插件fastjson将返回信息转为json格式&#xff0c;或者使用gson转…

【CMU 15-445】Proj3 Query Execution

Query Execution 通关记录Task1 Access Method ExecutorsSeqScanInsertUpdateDeleteIndexScanOptimizing SeqScan to IndexScan Task2 Aggregation & Join ExecutorsAggregationNextedLoopJoin Task3 HashJoin Executor and OptimizationHashJoinOptimizing NestedLoopJoin…