高频刷题一

[算法导论] 力扣高频1-100题 —— 【一刷方法总结】 本文回顾高频前100题,分为方法进行总结。对于常用的方法,给出经典例题。 下一章,给出不同问题场景 (字符串/数组/矩阵) ,分别会对应哪些方法。 目录 1. 动态规划 2. 递归dfs / 回溯 / 层序遍历bfs 3. 单调栈 4. 前缀和 5. 双指针 6. 排序类: 快排/堆排/归并 7. 链表操作:头插(反转链表)/快慢指针(链表判环/找环头) 1. 动态规划 72.编辑距离 300.最长递增子序列 2. 递归dfs / 回溯 / 层序遍历bfs 200.岛屿数量.. 阅读详情

题目1

给定数组hard和money,长度都为N,hard[i]表示i号的难度, money[i]表示i号工作的收入。

给定数组ability,长度都为M, ability[j]表示j号人的能力,每一号工作,都可以提供无数的岗位,难度和收入都一样,但是人的能力必须>=这份工作的难度,才能上班返回一个长度为M的数组ans,ans[j]表示j号人能获得的最好收入

数组hard:        [7,  1, 1, 3]

数组money:    [13, 5, 9, 6]

将hard和money按照hard排序

(1, 5) (1, 9) (3, 6) (7, 13) 

对于上面的排序,如果能力相同,那么肯定选择能力大的,因此能力相同的时候,去掉money小的

因此:(1, 9) (3, 6) (7, 13) 

如果难度增加了,但是钱变小了,那么没必要选择钱少的

因此:(1, 9) (7, 13) 

所以题目思路:先排序,然后放入TreeMap中,如果相同的,只放最大值,不同的,只放递增的

package com.zy.class002;

import java.util.Arrays;
import java.util.Comparator;
import java.util.TreeMap;

public class ChooseWork {
    public static int[] getMoneys(int[] hard, int[] money, int[] ability) {
        int len = hard.length;
        Job[] jobs = new Job[len];
        for (int i = 0; i < len; i++) {
            jobs[i] = new Job(money[i], hard[i]);
        }
        Arrays.sort(jobs, new JobComparator());

        // key : 难度   value:报酬
        TreeMap<Integer, Integer> map = new TreeMap<>();
        map.put(jobs[0].hard, jobs[0].money);
        // pre : 上一份进入map的工作
        Job pre = jobs[0];
        for (int i = 1; i < jobs.length; i++) {
            if (jobs[i].hard != pre.hard && jobs[i].money > pre.money) {
                pre = jobs[i];
                map.put(pre.hard, pre.money);
            }
        }
        int[] ans = new int[ability.length];
        for (int i = 0; i < ability.length; i++) {
            // ability[i] 当前人的能力 <= ability[i]  且离它最近的
            Integer key = map.floorKey(ability[i]);
            ans[i] = key != null ? map.get(key) : 0;
        }
        return ans;
    }
}

class Job {
    public int money;
    public int hard;

    public Job(int m, int h) {
        money = m;
        hard = h;
    }
}

class JobComparator implements Comparator<Job> {
    @Override
    public int compare(Job o1, Job o2) {
        return o1.hard != o2.hard ? (o1.hard - o2.hard) : (o2.money - o1.money);
    }
}

题目2:

给定一个数组arr,只能对arr中的一个子数组排序,但是想让arr整体都有序,返回满足这一设定的子数组中,最短的多长?

从左遍历,找出不是递增的最后一个数

从右遍历,找出最后一个不是递减的最后一个数,

两个数之间的数字就是最短长:

package com.zy.class002;

public class MinLengthForSort {
    public static int getMinLength(int[] arr) {
        if (arr == null || arr.length < 2) {
            return 0;
        }
        // 从右到左
        int min = arr[arr.length - 1];
        int nonMinIndex = -1;
        for (int i = arr.length - 2; i >= 0; i--) {
            if (arr[i] > min) {
                nonMinIndex = i;
            } else {
                min = Math.min(arr[i], min);
            }
        }

        if (nonMinIndex == -1) {
            return 0;
        }

        int max = arr[0];
        int nonMaxIndex = -1;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < max) {
                nonMaxIndex = i;
            } else {
                max = Math.max(arr[i], max);
            }
        }
        return nonMaxIndex - nonMinIndex + 1;
    }

    public static void main(String[] args) {
        int[] arr = { 1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19 };
        System.out.println(getMinLength(arr));

    }
}

 

 

ANSYS WORKBENCH——参数化建模以及参数优化(结果导出为Excel) 目录 1、打开软件workbench 2、找到static structure,双击打开 3、选择材料 4、参数化建模 ​ 注:印记面的创建 5、模型属性设置 注:设置优化目标 6、回主界面,选择direct optimization模块 1、打开软件workbench 2、找到static structure,双击打开 3、选择材料 4、参数化建模 至此参数化建模就已经完成啦 注:印记面的创建 印记面一般是一个虚拟的区域,参与实际的网格划分,但是只是由于载. 阅读详情

相关推荐

零成本实现飞牛 OS 内网穿透:CloudFlare 隧道搭建全攻略

一、引言:突破内网限制的最优解当你的内网环境中部署了飞牛 OS 系统(无论是老旧电脑还是 NAS 设备),想要实现公网访问时,传统方案往往面临两大痛点:公网 IP 申请困难且成本高DDNS 动态解析配置复杂专业内网穿透工具存在付费门槛今天为大家带来零成本解决方案:通过免费域名搭配 CloudFlare 隧道技术,无需公网 IP 即可轻松实现飞牛 OS 服务的公网访问。全程操作可视化,新手也能快速上手!二、前期准备:必备工具清单(1)域名准备。

Honmaple的博客 7493

算法:能获得的最好收入

给定数组hard和money,长度都为N给定数组ability,长度都为M,ability[j]表示j号人的能力每一号工作,都可以提供无数的岗位,但是人的能力必须>=这份工作的难度,才能上班.返回一个长度为M的数组ans,ans[j]表示j号人能获得的最好收入先根据难度排个序现在,我们就得到了一个难度和收入挂钩的单调数组了(收入高的,难度一定高;难度高的收入一定高)然后我们遍历能力数组,每次只做...

OceanStar的博客 521

Xshell 连接 kali 虚拟机教程

启动ssh服务,启动后重新查看ssh服务状态,如下图active(running)正常。至此便可以直接使用Xshell登录kali系统了。至此虚拟机已经可以上网。-查看ssh服务状态。

qq_40726937的博客 2219

2021-05-09:给定数组hard和money,长度都为N;hard[i]表示i号的难度, money[i]表示i号工作的收入;给定数组ability,长度都为M,ability[j]表示j号人的

2021-05-09:给定数组hard和money,长度都为N;hard[i]表示i号的难度, money[i]表示i号工作的收入;给定数组ability,长度都为M,ability[j]表示j号人的能力;每一号工作,都可以提供无数的岗位,难度和收入都一样;但是人的能力必须>=这份工作的难度,才能上班。返回一个长度为M的数组ans,ans[j]表示j号人能获得的最好收入。 福大大 答案2021-05-10: 按难度从小到大排序,按收入从大到小排序。 代码用golang编写。代码如下: package

福大大架构师每日一题 2万+

FreeRTOS项目:智能手表(1);

从 “最底层启动”→“系统基础配置”→“硬件驱动”→“中间件能力封装”→“上层业务功能”,分层递进、从基础到应用,就能逐步把整个项目的逻辑串联起来~

weixin_46847454的博客 1447

记一次网络风暴/网络环路

环境: win10 x64 ,联想云教室,电子教室,华三交换机。 状况描述: 最开始开机,一直卡在PXE启动界面,进不去系统。电脑技术张工说,先开教师机后开学生机。因为学生机开机需要读取教师机的镜像。但是状况依旧。 开始排查网络,重启交换机后,发现陆续有几台电脑能登陆进系统桌面了,但很慢起码过了5分钟以上才能进去。 教师机一直都是正常的,然后我在教师机部署电子教室。技术说这电子 教室与云教室IP冲突。 (那之后我查了下这两款软件的PID和端口,所占端口不一样,那没冲突) 我说不可能吧,这套软件在

Nightwish5的博客 2865

LeetCode高频题刷题笔记(一)数组

9:移动零、颜色分类、删除有序数组中的重复项、合并两个有序数组、二分查找、移除元素、有序数组的平方、长度最小的子数组、螺旋矩阵 II

qq_29355253的博客 309

手把手教你用ObjectCRX进行Caxa二次开发:从零开始的环境搭建教程

本文是一份面向零基础初学者的Caxa二次开发实战指南,重点讲解如何使用ObjectCRX框架从零开始搭建开发环境。内容涵盖Visual Studio 2015版本锁定、ObjectCRX向导集成、项目创建、典型错误解决,并最终实现一个可在Caxa中运行的HelloWorld程序,帮助开发者快速入门并避开常见陷阱。

w3x4y的博客 512

Java最新高频刷题一,java面试大全笔记

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,

2401_84584583的博客 674

用V E S C 6-M K V I 第六代调速控制器给VESC电调刷固件

文章摘要:本文介绍了一款先进的电机控制器,具备多项创新技术。核心亮点包括三相电流/电压检测、四象限无缝运行、多模式兼容等先进电机控制技术,以及智能感知与安全保护、高效能电源管理、多样化连接与扩展功能。此外,该控制器支持实时数据监测与用户交互,具备开源生态和工业级可靠性,适用于电动载具、机器人及工业领域。用户需注意散热要求和兼容性提示,可通过VESC-Tool软件进行灵活配置。产品可在常竹科技淘宝店购买,并加入技术交流群获取支持。

2403_89422757的博客 1364

麒麟操作系统安装教程(保姆级)

本文介绍了如何在VM中安装麒麟操作系统,文章详细的介绍了麒麟操作系统按钻过步骤。

啊渊的专栏 1万+

一文总结关于二叉树的刷题策略与高频常考题型(一)

小伙伴们,大家好!二叉树作为程序员笔试面试常见的数据结构类型,其题目繁多,变化莫测,好多题遇到后一看答案就会,一做题目就忘。但是!经过小编大量刷题和笔试面试后,小编发现其实常考的题型就几种,只要把这些题型吃透摸透,二叉树的题就可以斩杀80%啦。

lqxisqueen的博客 982

PyTorch实战(20)——生成对抗网络(Generative Adversarial Network,GAN)

自生成对抗网络 (Generative Adversarial Network, GAN) 提出以来,一直是一个活跃的研究和开发领域。本节探索了 GAN 的基本概念,重点解析了其两大核心组件——生成器与判别器的架构设计,深入阐述了 GAN 模型的整体工作机制,并使用 PyTorch 从零开始实现了深度卷积生成对抗网络 (Deep Convolutional GAN, DCGAN)。

盼小辉丶的博客 3539

高频刷题一,java高级技术经理面试题

很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。与大厂擦肩而过。我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。本文已被。

m0_60144796的博客 593

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

考科目一有什么攻略?

优先完成驾考App(如驾考宝典、车轮驾考通)中的全部题目(约1600题),重点做「模拟考试」和「专项练习」。:常见金额(200/500/2000)对应场景(如遮挡号牌200元,伪造证件2000元)。高速最低60km/h,最高120km/h(两车道左快右慢,三车道依次110/90/60)。:注意“可以”vs“应当”、“拘役”vs“拘留”等关键词。考试共100题,每题1分,90分及格,答错11题自动结束。:右转让左转,转弯让直行,辅路让主路,有让字标志必停。:手心朝你=停车,单手摆动=转弯,两手平伸=直行。

zckd111的博客 1053

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

算法题如何刷

算法题如何刷

m0_46459772的博客 926

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

一刷代码随想录完结撒花!

我从一个小白开始,自2025.1.25起,约摸刚好花了两个月时间,慢慢把每一个代码随想录中所提到的每个知识点都过了一遍。这个过程确实是比较折磨,但也收获颇丰。后面可能要开始刷高频题,例如hot100这些,希望高频题我能做得更快一些,毕竟已经有了一定的知识储备了。如果有时间和精力,再回来二刷代码随想录吧。终于,咱也是把代码随想录所有章节都刷完一遍了!一共十一大章,大约170道题,全部做完。希望春招能找到心仪的实习(虽然我很菜)

m0_49844155的博客 372

劝大家不要一心扑在刷题上,尤其是高项案例

高项三种题型,选择题、案例分析、论文题,其中最不好写的就是案例了,一共三大道材料,很多人都是想着靠亖记硬背和刷题去提分的,但其实一心扑在刷题和背书上是见效蕞慢的,想要案例分析的分数能上去,背完下边锺点考点这些就足够了!✔看到分几个小组分别开发,一定要注意沟通协调看✔到并行施工,说明会增加风险。✔看到项目经理亲自动手做技术就说项目经理主要是管理,不做技术。✔看到第.一次看到xx计划,说明编写计划时,大家没参与。✔看到做计划时倒推日期,都说这是蕞迟时间,风险很大。✔看到改了若干错别字,匆忙的通过计划。

w011109的博客 697

来自本科生的暴击:某进鹅厂和字节的大牛开源面试刷题经验

点击“开发者技术前线”,选择“星标????”让一部分开发者看到未来作者:huber转载自:量子位今天,你刷LeetCode了吗?最近,GitHub上这样一套LeetCode笔记火了。一位Java...

开发者技术前线-DevolperFront 181

刷题记录13(12休息)|239. 滑动窗口最大值(一刷至少需要理解思路) 、347.前 K 个高频元素 (一刷至少需要理解思路)

时间复杂度 O(n)空间复杂度 O(k) 一个堆的概念及实现。后续补充!!!!!!!!!时间复杂度 O(nlogk)空间复杂度 O(n)先看了一遍思路,后续再来详细更新理解

weixin_43514202的博客 79

一周刷爆LeetCode,字节技术官亲码算法与数据结构刷题宝典真香

不知从什么时候开始,以字节为主的一大波大厂面试开始了对算法的连环拷问。如果事前没有系统地刷一波题的话,算法这一关还是比较难过的

weixin_50205273的博客 143

如何评价书木兰软考题库?一个适合小白的软考题库平台

书木兰软考题库,比较适合小白的地方,是她的解析倾向于通俗化表达,并且加入了顺口溜、记忆口诀...

qq_42927225的博客 416

LeetCode刷题——堆

/ 优先队列大顶堆// 大顶堆是优先队列的默认行为priority_queue<int, vector<int>, great<int>> minHeap // 需要指定参数模板great<int>// 手动实现= i){i >= 0;--i)

qq_37280410的博客 363

Microsoft刷题记录

PASS区 PASS但非最优 非PASS区

bob的博客 802

刷爆LeetCode,字节技术官亲码算法面试进阶神技太香了

算法这东西你想要进大厂或者往更高的层次进阶的话,肯定是绕不开的!

Cr1556648487的博客 364

代码随想录算法训练营53期day11|栈与队列part02

347.前 K 个高频元素 (有点难度,可能代码写不出来,一刷至少需要理解思路)239. 滑动窗口最大值 (有点难度,可能代码写不出来,但一刷。150. 逆波兰表达式求值。

qq_59815419的博客 229
上一篇: springCloud学习三之Eureka原理
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值