【秋招刷题打卡】Day01-自定义排序
Day01-自定排序
前言
给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦,详细介绍 =>笔试刷题陪伴小屋-打卡赢价值丰厚奖励 <=
⏰小屋将在每日上午发放打卡题目,包括:
- 一道该算法的模版题 (主要以力扣,牛客,acwing等其他OJ网站的题目作为模版)
- 该算法的应用题(主要以往期互联网大厂 笔试真题 的形式出现,评测在咱们的 笔试突围OJ)
小屋day01
自定义排序 在笔试中很少会单独考,但是应用非常广泛,一般是作为中间的流程出现,建议小伙伴们要好好掌握哦。
✨ 自定义排序模版
对于排序规则,这里采用 lambda 表达式的简洁写法。
Java
在Java中,lambda表达式用于简化Comparator接口的实现,从而实现自定义排序。Java 8引入了lambda表达式,使得代码更加简洁。以下是一个示例,展示如何使用lambda表达式对自定义对象进行排序:
List<Student> studentList = new ArrayList<>();
studentList.add(new Student("Jon", 22, 1001));
studentList.add(new Student("Steve", 19, 1003));// 按名字排序
studentList.sort((Student s1, Student s2) -> s1.getName().compareTo(s2.getName()));// 按年龄排序
studentList.sort((Student s1, Student s2) -> Integer.compare(s1.getAge(), s2.getAge()));
C++
在C++中,lambda表达式可以用来定义自定义排序规则。C++11引入了lambda表达式,使得代码更加简洁和灵活。以下是一个示例,展示如何使用lambda表达式对字符串向量按长度进行排序:
#include <vector>
#include <algorithm>
#include <iostream>int main() {std::vector<std::string> strings = {"apple", "banana", "cherry", "dog", "elephant"};std::sort(strings.begin(), strings.end(), [](const std::string& a, const std::string& b) {return a.length() < b.length();});for (const auto& s : strings) {std::cout << s << std::endl;}return 0;
}
Python
在Python中,lambda表达式常用于sorted
函数和sort
方法的key
参数,以实现自定义排序。以下是一个示例,展示如何使用lambda表达式对字符串列表按长度进行排序:
words = ["apple", "banana", "cherry", "date", "elderberry"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)
🫔 模版题
leetcode-1636. 按照频率将数组升序排序
评测链接🔗 https://leetcode.cn/problems/sort-array-by-increasing-frequency/)
题目描述
给你一个整数数组 nums
,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。
请你返回排序后的数组。
思路
按着题目的要求,先算出数组 n u m s nums nums 中各元素的频率,然后按照元素频率和数值对数组进行排序即可。
对于排序规则,这里采用 lambda 表达式的简洁写法。
-
Python
class Solution:def frequencySort(self, nums: List[int]) -> List[int]:cnt = Counter(nums) # 计数器nums.sort(key=lambda x: (cnt[x], -x)) # 默认从小到大排序return nums
-
C++
class Solution { public:vector<int> frequencySort(vector<int>& nums) {vector<int> cnt(201); // 计数器for (int v : nums) {++cnt[v + 100];}// 也可以写成二元组的形式// nums[i] = {cnt[x], -x};// 然后从小到大排序sort(nums.begin(), nums.end(), [&](const int a, const int b) {if (cnt[a + 100] == cnt[b + 100]) return a > b;return cnt[a + 100] < cnt[b + 100];});return nums;} };
-
Java
class Solution {public int[] frequencySort(int[] nums) {List<Integer> list = new ArrayList<>();Map<Integer, Integer> freqs = new HashMap<>(); // 计数器for (int x : nums) {list.add(x);freqs.put(x, freqs.getOrDefault(x, 0) + 1);}Collections.sort(list, (a, b) -> { // Java的自定义排序int freq1 = freqs.get(a), freq2 = freqs.get(b);return freq1 == freq2 ? b - a : freq1 - freq2;});for (int i = 0; i < nums.length; ++i) {nums[i] = list.get(i);}return nums;} }
🍰 笔试真题
-
该题来自今年小红书春招的笔试题,题目难度为 easy,考查的是比较裸的自定义排序。
-
另外给大家带来一道进阶版的,今年华为春招的笔试题,这边给大家放出评测链接,有能力的小伙伴可以去试一试哦
进阶版🔗评测链接:https://app5938.acapp.acwing.com.cn/problem/HW001
盛夏送礼物
评测链接:https://app5938.acapp.acwing.com.cn/contest/3/problem/Day01
题目描述
K小姐是一名知名博主,她在某个盛夏的午后决定给她的粉丝送一些小礼物。她有 n n n 名粉丝,编号从 1 1 1 到 n n n,但她只能选择其中 k k k 名送礼物。为了公平起见,她决定选择其中对她支持力度最大的前 k k k 名粉丝。如果有两名粉丝的支持力度相同,则优先选择点赞数更多的粉丝;如果点赞数也相同,则优先选择编号更小的粉丝(因为这意味着Ta关注K小姐的时间更早)。
每名粉丝如果给K小姐点一次赞,则对K小姐的支持力度就增加 1 1 1 点;如果收藏K小姐的一篇文章,则对K小姐的支持力度增加 2 2 2 点。
现在K小姐想知道,她应该选择哪 k k k 名粉丝送出礼物,你能帮帮她吗?
输入格式
输入包含 n + 1 n+1 n+1 行。
第一行包含两个正整数 n , k ( 1 ≤ k ≤ n ≤ 1 0 5 ) n,k\ (1 \leq k \leq n \leq 10^5) n,k (1≤k≤n≤105),分别表示对K小姐有过支持的粉丝个数,以及K小姐选择送礼的粉丝个数。
接下来 n n n 行,每行两个整数 x , y ( 0 ≤ x , y ≤ 1 0 5 ) x,y\ (0 \leq x,y \leq 10^5) x,y (0≤x,y≤105),表示第 i i i 位粉丝给K小姐点过 x x x 次赞,收藏过 y y y 个K小姐的文章。
输出格式
输出包含一行 k k k 个正整数,表示K小姐选择出送礼物的粉丝们的编号。(按照升序输出)
样例输入
4 2
1 2
2 1
3 0
1 3
样例输出
1 4
数据范围
- 1 ≤ k ≤ n ≤ 1 0 5 1 \leq k \leq n \leq 10^5 1≤k≤n≤105
- 0 ≤ x , y ≤ 1 0 5 0 \leq x,y \leq 10^5 0≤x,y≤105
题解
本题可以按照题目描述,直接进行模拟。
-
将每个粉丝的信息(点赞数、收藏数、编号)存储在一个数组中。
-
定义一个自定义的排序规则:
- 首先比较支持力度(点赞数 + 收藏数 * 2)
- 如果支持力度相同,则比较收藏数
- 如果收藏数也相同,则比较编号
-
对存储粉丝信息的数组自定义的排序规则进行排序。
-
取排序后的前 k k k 个粉丝的编号,按照升序输出即可。
时间复杂度为 O ( n log n ) O(n \log n) O(nlogn),空间复杂度为 O ( n ) O(n) O(n)。
参考代码
- Python
n, k = map(int, input().split())
fans = []
for i in range(n):x, y = map(int, input().split())fans.append((x, y, i + 1))fans.sort(key=lambda x: (-x[0] - x[1] * 2, -x[1], x[2]))res = [fans[i][2] for i in range(k)]
res.sort()
print(*res)
- Java
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();int[][] fans = new int[n][3];for (int i = 0; i < n; i++) {fans[i][0] = sc.nextInt();fans[i][1] = sc.nextInt();fans[i][2] = i + 1;}Arrays.sort(fans, (a, b) -> {int wa = a[0] + a[1] * 2;int wb = b[0] + b[1] * 2;if (wa != wb) {return wb - wa;} else if (a[1] != b[1]) {return b[1] - a[1];} else {return a[2] - b[2];}});int[] res = new int[k];for (int i = 0; i < k; i++) {res[i] = fans[i][2];}Arrays.sort(res);for (int i = 0; i < k; i++) {System.out.print(res[i]);System.out.print(' ');}}
}
- Cpp
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;int main() {int n, k;cin >> n >> k;vector<vector<int>> fans(n, vector<int>(3));for (int i = 0; i < n; i++) {cin >> fans[i][0] >> fans[i][1];fans[i][2] = i + 1;}sort(fans.begin(), fans.end(), [](const vector<int>& a, const vector<int>& b) {int wa = a[0] + a[1] * 2;int wb = b[0] + b[1] * 2;if (wa != wb) {return wa > wb;} else if (a[1] != b[1]) {return a[1] > b[1];} else {return a[2] < b[2];}});vector<int> res(k);for (int i = 0; i < k; i++) {res[i] = fans[i][2];}sort(res.begin(), res.end());for (int i = 0; i < k; i++) {cout << res[i] << " ";}return 0;
}
秋招笔试刷题陪伴小屋
🍰 打卡奖励预览
打卡时长 | 奖励内容 |
---|---|
7天 | 任选一家最新互联网笔试真题 x 1 (价值 29.9 元) |
14天 | 任选一家最新互联网笔试真题 x 3 + 笔试面试经验贴 |
21天 | 任选一家最新互联网笔试真题 x 5 + 清隆三语言算法模版 |
28天 | 最新互联网大厂笔试真题汇总(价值 199 元) + 华为OD机试训练营 (价值 89 元 ) |
🎀 其中笔试真题选自近 一年半 互联网春秋招的笔试题
相关文章:
【秋招刷题打卡】Day01-自定义排序
Day01-自定排序 前言 给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦,详细介绍 >笔试刷题陪伴小屋-打卡赢价值丰厚奖励 < ⏰小屋将在每日上午发放打卡题目,包括: 一道该算法的模版题 (主要以力扣,牛客,acwin…...
API低代码平台介绍6-数据库记录删除功能
数据库记录删除功能 在前续文章中我们介绍了如何插入和修改数据库记录,本篇文章会沿用之前的测试数据,介绍如何使用ADI平台定义一个删除目标数据库记录的接口,包括 单主键单表删除、复合主键单表删除、多表删除(整合前两者&#x…...
计算机基础之:硬件系统的性能评估标准
服务器时钟的性能通常涉及多个方面,主要包括准确性、稳定性、以及对系统性能的影响。以下是一些关键指标和衡量方法: 准确性: 时间偏移:测量服务器时钟与一个可靠时间源(如GPS时间、原子钟或NTP服务器)之间…...
高互动UI设计揭秘:动画效果如何提升用户体验
动画,由于其酷的视觉冲击,往往会产生极好的用户体验。UI设计中的动态效果可以使用户界面看起来更酷,特别是界面的功能动画,是UX设计的重要组成部分,不容忽视。为什么UI设计的动态效果如此重要?接下来&#…...
探索Java异常处理的奥秘:源码解析与高级实践
1. 引言 在Java编程的广阔天地中,异常处理是确保程序健壮性、稳定性和可维护性的重要基石。对于Java工程师而言,深入理解Java异常处理的机制,并能够在实践中灵活运用,是迈向卓越的重要一步。 2. 基本概念 在Java中,异常(Exception)是程序执行期间出现的不正常或错误情况…...
深入了解python函数与函数内存使用
函数的定义 函数作为代码复用的基本单元,可以帮助我们组织代码、减少重复、提高可读性和可维护性。 在 Python 中,函数本质上是对象,可以赋值给变量、存储在数据结构中、作为参数传递和返回。 函数与内存 函数的加载和调用过程中ÿ…...
Java面试----MySQL面试题
1.索引有哪些优缺点? MySQL索引作为一种提升数据库查询效率的重要机制,具有以下主要优点和缺点: 优点: 提高查询速度: 索引能够显著加速数据的检索过程,类似于书籍的目录,让数据库引擎能够快速…...
python从入门到精通2:缩进
在Python中,缩进(Indentation)是一个非常重要的语法元素,它用于表示代码块的结构。与其他许多编程语言使用大括号 {} 来定义代码块不同,Python使用缩进来确定代码块的开始和结束。这种简洁的语法使得Python代码更加清晰…...
了解CDN:提升网络性能和安全性的利器
在当今的数字时代,网站性能和安全性是每一个网站管理员必须关注的核心问题。内容分发网络(CDN,Content Delivery Network)作为解决这一问题的重要工具,逐渐成为主流。本文将详细介绍CDN的定义、作用及其工作原理&#…...
ChatGPT的工作原理
ChatGPT的工作原理可以详细分为以下几个步骤,下面将结合相关信息进行清晰、详细的介绍: 数据收集: ChatGPT首先会从大量的文本数据中收集信息,这些数据可能包括网页、新闻、书籍等多样化的来源。它还会特别关注和分析网络上的热点…...
基于DPU的云原生裸金属服务快速部署及存储解决方案
1. 背景介绍 1.1. 业务背景 在云原生技术迅速发展的当下,容器技术因其轻量级、可移植性和快速部署的特性而成为应用部署的主流选择,但裸金属服务器依然有其独特的价值和应用场景,是云原生架构中不可或缺的一部分。 裸金属服务器是一种高级…...
论文学习_Large Language Models Based Fuzzing Techniques: A Survey
论文名称发表时间发表期刊期刊等级研究单位Large Language Models Based Fuzzing Techniques: A Survey 2024年arXiv-悉尼大学 0.摘要 研究背景在软件发挥举足轻重作用的现代社会,软件安全和漏洞分析对软件开发至关重要,模糊测试作为一种高效的软件测试方法,并广泛应用于各个…...
响应式德米拉数字内容交易系统素材下载站模板
★模板说明★ 该数字交易系统设计非常完美,两种响应式模式,可打开边栏模式和盒子模式;八种网站颜色,四种风格颜色可供用户自行选择,还可在网站选背景图片;完美的分成系统、充值功能、个人中心等等都以html…...
数据库开发-MySQL
前言 首先来了解一下什么是数据库。 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app…...
香港大带宽服务器高性能配置选择灵活
香港大带宽服务器是指在香港数据中心托管的,配备了高速网络连接的服务器。这些服务器通常用于需要大量数据传输和快速响应时间的应用,如视频流媒体、在线游戏、远程工作和大规模数据处理任务。具体分析如下,rak部落为您整理发布。 1. **内存配…...
Oracle中生僻汉字的解决办法
在Oracle数据库中处理生僻汉字时,主要面临的问题是某些字符集可能无法完全支持所有的汉字,特别是生僻字。以下是一些解决Oracle中生僻汉字问题的办法: 检查当前字符集: 使用SELECT USERENV(language) FROM dual;命令来查看当前数…...
在Kotlin中,`field`关键字是一个特殊的标识符,用于在属性的自定义getter和setter中访问backing field(存储属性值的实际字段)
在Kotlin中,field关键字是一个特殊的标识符,用于在属性的自定义getter和setter中访问backing field(存储属性值的实际字段)。Kotlin属性默认提供getter和setter方法,但当你需要自定义它们的行为时,可以使用…...
如何在 MySQL 中创建和使用事务?
目录 1. 环境准备 2. 创建事务 3. 事务执行 4. 事务撤消 5. 总结 事务是数据库区别于文件系统的重要特征之一,当我们有了事务就会让数据库始终保持一致,同时我们还能通过事务机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会…...
Python数据分析-对驾驶安全数据进行了预测
一、研究背景和意义 随着汽车保有量的不断增加,交通事故已成为全球范围内的重大公共安全问题。每年因交通事故造成的人员伤亡和财产损失给社会带来了巨大的负担。为了提高驾驶安全,减少交通事故的发生,许多研究致力于探索影响驾驶安全的因素…...
全志 Android 11:实现响应全局按键
一、篇头 最近实现热键想功能,简单总结了下全志平台Android 11 的响应全局热键的方法。 二、需求 实现全局热键,响应F-、AF、F三个按键,AF只用于启动调焦界面,F-和F除了可以启动调焦界面外,还用于调整镜头的焦距&…...
DVWA 靶场 Open HTTP Redirect 通关解析
前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…...
Blender:渲染输出
一、渲染设置 渲染设置界面: 渲染器选择切换 Cycles渲染器 【文档】 Cycles渲染目标: Cycles是Blender用于产品级渲染,基于物理的路径跟踪器。主要关注于影视质量,更高质量的外观它旨在提供易于使用以及准确的物理渲染结果具有艺术…...
NTFS和exFAT哪个性能好 U盘格式化NTFS好还是exFAT好 mac不能读取移动硬盘怎么解决
文件系统的选择对存储设备的性能和兼容性有着重要影响。而NTFS和EXFAT作为两种常见的文件系统,它们各有特点,适用于不同的使用场景。我们将深入探讨NTFS和EXFAT的区别,帮助大家选择最适合自己需求的文件系统。 NTFS:稳定与性能的平…...
kafka的基本模型
kafka官网 线程和线程之间的数据交互 在jvm里不同的线程有自己的栈内存,但彼此之间交互可以在共享的内存中进行,即堆内存,堆内存会将这些消息放到队列中,具体实现jvm见,栈内存各自维护,堆内存大家共享 进…...
npm语义化版本和版本运算符
版本号组成 一个完整的版本号,由三部分组成:主版本号(major)、次版本号(minor)、修订版本号(patch),简称X.Y.Z,具体含义: 主版本号(major):项目(…...
孩子到了叛逆期,家长应该怎么教育孩子?
到了一定的年龄后,有些孩子会变得叛逆起来,那么对于家长来说,如何教育叛逆的孩子?孩子叛逆期教育方法有哪些呢? 叛逆期教育孩子用什么方法 一。要摒除父母对孩子居高临下的心态,放下身叚࿰…...
芋道源码 yudao-cloud 、Boot 文档,开发指南 看全部,破解[芋道快速开发平台 Boot + Cloud]
1、文档全部保存本地部署查看,真香 文档已抓取最新版本,2024.06.21。【唯一遗憾,表结构到2024.04月,已被限制放到知识星球】会员中心,支付中心,CRM,ERP,商城,公众号运行…...
工具函数-算法
1. 实现四舍五入,保留两位小数 const v 0.0635455; // 方式1,保留2位小数,返回的是number格式 const formatted Math.round(v * 100) / 100; // 方式2,保留2位小数,返回的是字符串格式 const formatted v.toFixed(…...
C# yolov8 OpenVINO 同步、异步接口视频推理
C# yolov8 OpenVINO 同步、异步接口视频推理 目录 效果 项目 代码 下载 效果 同步推理效果 异步推理效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Windows.Form…...
【STM32入门学习】定时器与PWM的LED控制
目录 一、定时器与PWM介绍 1.1定时器 1.1.1定时器分类简介 1.1.2STM32定时器分类比较表 1.1.3定时器启动操作: 1.2 PWM 1.2.1 简介: 1.2.2PWM工作原理 1.2.3使用步骤: 二、定时器计数控制LED灯亮灭 2.1HAL库 2.1.1使用HAL库创建…...
安康公司做网站/营销推广活动策划
来源:blog.csdn.net/weixin_43951778现开发一个停车系统,用户根据车位停车1)车主查看现在有无车位(最多100个车位),给车主随机分配一个车位,如果该位置上有车,不能停2)按停车时间收费,3小时以内不收费,3小时以外,每小时2元,最大20元3)车主可以查看自己停车的车位和收…...
旅游网站建设技术有哪些/百度seo效果
进实拍视频群 请关注公众号:姨拍2017-09-21364661864 16:51:45你好剧照摄影师 少铎 16:55:38为什么优酷下载的(.kux)格式视频转码总提示我“错误”?求答!我已付了99元钱狸窝宝典 16:57:01请描述下你的问题具体症状或截个症状图发给我帮你看下…...
番禺做网站600元/b2b平台网站
in 判断元素是否存在于容器当中 list1 [1, 2, 3] tuple1 (1, 2, 3) set1 {1, 2, 3} print(3 in list1) # True print(3 in tuple1) # True print(3 in set1) # True 如果要判断是否在set当中,要注意被判断的元素必须可以保存在set当中,如果是列表,字典,集合,则不能判断 …...
网站文案怎么做/著名的个人网站
今天遇到数据库的一个问题,就是每当从主表中删除一个主键id时,由于与他相关联的表中有相关的字段数据,所以无法删除。查了一大堆资料,发现我建表关联用的是on Restrict.可能问题就出在这里吧。 外键约束对子表的含义: 如果在父表中…...
web简单网页代码/优就业seo怎么样
纹理概述在计算机图形学中,「纹理(Texture)」 是我们经常会提及的一个名词。直观的第一印象,很容易会将纹理理解成一张图片,实际上在计算机图形学中,我们也确实会经常通过一张张格式诸如png、jpg之类的图片来获得纹理数据。但在图…...
做初级会计实务题的网站/福州seo排名优化公司
写在前面:本文建立在代码基础过硬,想一起研究一下面试中锦上添花的一些技能,注意不是雪中送炭,基础不好的,好好学学Python再来看吧! 本文将围绕几个问题来逐个展开 面试准备 自我营销 关于终面:一些扯蛋问题…...