算法学习
算法学习
软软的铲屎官
这个作者很懒,什么都没留下…
展开
-
【部门排序】
公司hr想要分析各个研究所所在城市的主力业务分布。给定一批部门信息记录于数组departments,departments[i]格式为city departmentName personNum,分别带别该部门所在城市、部门名称、人数1、先从每个城市选取人数多最多的5个部门作为分析对象,当人数相等时优先取departmentName字典序小的注:不足5个部门的城市,按实际个数选取2、然后对于选取的结果,按格式city departmentName逐行输出。首先按city字典升序输出;原创 2024-08-09 14:45:21 · 215 阅读 · 0 评论 -
数据库缓存
缓存是一种提高数据库查询效率的手段,现使用训练数据进行模拟访问,以对缓存机制进行优化。给定缓存大小和训练数据(一组数据编号),依次模拟访问这组数据,请分析在此访问规则下最少的数据库访问次数。原创 2024-05-16 15:45:45 · 543 阅读 · 0 评论 -
最小距离和
终端公司的零售店需要定期去仓库提取货物,假设零售店和仓库在一个矩阵上:相邻点的距离为 1;只能通过上下左右走动。矩阵元素的值仅为三种:0,表示仓库;-1,表示障碍;1,表示零售店。注:障碍无法通过,其它可以通过。为了将取货效率最大化,需要计算每个零售店走到最近仓库的最小距离,并输出这些最小距离的和:无法到达仓库的零售店,不参与距离和的计算;没有零售店或者没有仓库的话,返回0;原创 2024-05-13 15:13:36 · 357 阅读 · 0 评论 -
任务调度算法
某分布式任务调度系统有 taskNum 个任务(编号从 1 到 taskNum)需要调度,调度策略:任务之间可能存在依赖关系,且无循环依赖,如任务1 依赖任务2,那么要等待任务2执行完才能执行任务1;如果任务之间没有依赖关系,则可以并发执行(假设并发所需资源是充足的)。现给出任务间的依赖关系,并假设每个任务的执行时间恒为 1 分钟,请计算执行完这 taskNum 个任务所需的最短时间(单位分钟)。原创 2024-05-10 17:35:52 · 284 阅读 · 0 评论 -
Mini订货系统
请实现一个Mini订货系统,提供订货、发货、查询功能:OrderSystem() — 系统初始化。order(int customerId, string[] goods) — 表示某客户的一次订货,goods每个元素表示一件商品,值为商品种类:同一客户可以多次订货;单次订货,可对同一种类的商品订购多件。deliver(string[] goods) — 表示发货多件商品,goods含义同上:每个元素表示一件商品,值为商品种类依次将每件商品按照订购的先后顺序发给订购这件商品的客户。原创 2024-05-10 08:53:19 · 530 阅读 · 0 评论 -
字符编码(十六进制)
假设一个简易的变长编码规则XUTF:每个字符有一个唯一编号值 unicodeVal(如汉字“华”的编号十进制值是21326),使用1~6个字节进行编码,编码规则如下:编码过程:参考编号值范围,根据 unicodeVal 值判断需要几个字节进行编码,然后依次把 unicodeVal 的二进制比特填充到二进制格式中的有效位上:右侧对齐、左侧补 0;注意:固定位不变。现给定某个字符的十进制编号值 unicodeVal,请按XUTF编码规则对该字符进行编码,输出编码后的十六进制字符串(大写)。原创 2024-05-08 17:05:55 · 1275 阅读 · 0 评论 -
简单负载均衡
某工程师为了解决服务器负载过高的问题,决定使用多个服务器来分担请求消息。现给定 k 台服务器(编号从 1 到 k),以及一批请求消息的信息,格式为到达时刻 负载大小,消息说明:每个时刻最多只有一条消息到达;负载大小表示服务器处理该消息所需时长。请计算在负载分担规则下,哪些服务器处理的负载最高(服务器处理的负载为所处理的所有消息的负载累加和),并以升序返回这些服务器的编号。负载分担规则:按顺序循环分配服务器,如:有3台服务器且都空闲,分配的方式为 1->2->3->1…;原创 2024-05-08 17:04:13 · 726 阅读 · 0 评论 -
快速排序应用
著名的快速排序算法里有一个经典的划分过程:通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。给定一个划分后的正整数序列,请问有多少个元素可能是划分过程中选取的主元?并按升序输出这些主元。原创 2024-05-08 16:46:36 · 251 阅读 · 0 评论 -
关键字标识
给定一个关键词集合 words 和一个字符串 inputStr,要求将 inputStr 中出现的所有关键词用标签标记:关键词标签的起始为,结束为。把可以合并的标签进行合并,即使用最少的标签。合并规则如下:关键词相邻则进行合并,如 ab、cd为关键词,且在字符串中相邻,则合并为abcd关键词相交则进行合并,如 zhi、hid为关键词,且在字符串中相交,则合并为zhid。原创 2024-05-08 16:45:43 · 547 阅读 · 0 评论 -
输入两个字符串,找出字符串1在字符串2中的所有字符,去重并按照ASCII码排序.
import java.util.*;/** * Description: TODO * 输入两个字符串,找出字符串1在字符串2中的所有字符,去重并排序 * 例如 输入 comehere welcometoZhuhai * 输出 [c, e, h, m, o] * @author 19040838 * @title: SortSameString * Created by 19040838 on 2021.04.08 15:00 */public class Sor原创 2021-04-08 17:26:53 · 1406 阅读 · 1 评论 -
100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。
题目:100个人围成一个圈从1开始报数,输入数m,报到m的人退出,继续从1开始报,报到m继续退出依次下去直到剩余的人小于m不再报数,输出剩下人的位置。import java.util.*;public class CircleNum { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); List&l原创 2021-04-08 15:52:40 · 4355 阅读 · 2 评论 -
合并交叉区间
import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * Description: TODO * 合并交叉区间 * @title: Demo * Created by 19040838 on 2021.02.18 18:53 */public class Demo { public static void main(String[] args) { List<原创 2021-04-07 17:59:47 · 235 阅读 · 0 评论 -
Map和Bean互相转化
import org.apache.commons.beanutils.BeanUtils;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Field;import java.util.*;import java.util.Map.Entry;/** * Description Map和Bean互相原创 2021-03-12 19:09:14 · 425 阅读 · 0 评论 -
递归遍历目录下的所有文件
import java.io.File;public class RecursiveTraversalFileAll { public static void main(String[] args) { scanFile("E:\\IDEA-workspace\\ArchitectStudy\\src\\com\\xjc\\study\\test"); } /** * 递归遍历目录下的所有文件 * @param path 扫描路径 *原创 2021-03-12 19:00:46 · 229 阅读 · 0 评论 -
二叉树的遍历:前、中、后序遍历、层次遍历
1、前序遍历import java.util.Stack;/** * @Description 前序遍历的递归实现与非递归实现 * @Author 19040838 * @Date 2021.03.08 16:53 **/public class BinaryTreePreOrderTraversal { /** * 递归方式:方法一preOrderRe * 方法二preOrderRe1 **/ public static void preOrderRe(原创 2021-03-12 17:25:42 · 579 阅读 · 0 评论 -
leetcde第十九题java解法——删除链表的倒数第N个节点
/** * Description: TODO * leetcde第十九题java解法——删除链表的倒数第N个节点 * @title: LinkRemove * Created by 19040838 on 2021.03.08 10:42 */public class LinkRemove { public static void main(String[] args) { LinkNode linkNode = new LinkNode(1); li原创 2021-03-10 17:58:18 · 65 阅读 · 0 评论 -
反转链表方法
/** * Description: TODO * @title: LinkedListReverse * Created by on 2021.03.03 15:35 */public class LinkedListReverse { // 测试 public static void main(String[] args) { ListNode listNode = null; listNode = new ListNode(1);原创 2021-03-10 17:55:35 · 229 阅读 · 0 评论 -
题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
import java.util.Scanner;/** * Description: TODO 题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) * 最后一个数后面也要有空格 * 输入描述: 输入一个long型整数 * 输出描述: 按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。 * 示例1 输入 180 输出 2 2 3 3 5 * @title: Demo010 * Cre原创 2021-02-10 09:06:57 · 951 阅读 · 0 评论 -
数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
import java.util.*;/** * Description: TODO 题目描述 * 数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 * 输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开 * 输出描述: 输出合并后的键值对(多行) * 示例1 * 输入 * 4 * 0 1 * 0 2 * 1 2 * 3 4 * 输出 * 0 3 *原创 2021-02-10 09:06:38 · 1067 阅读 · 0 评论 -
题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
import java.util.*;/** * Description: TODO * 题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 * 保证输入的整数最后一位不是0。 * 输入描述: 输入一个int型整数 * 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 * 示例1 输入 9876673 输出 37689 * @title: Demo012 * Created by 19040838 on 2021.01.29 10原创 2021-02-08 09:09:04 · 449 阅读 · 0 评论 -
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
import java.util.HashSet;import java.util.Scanner;import java.util.Set;/** * Description: TODO 题目描述 * 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。 * 不在范围内的不作统计。多个相同的字符只计算一次 * 例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。 * 输入描述: 输入一行没有空格的字符串原创 2021-02-08 09:08:44 · 603 阅读 · 0 评论 -
题目描述 给定n个字符串,请对n个字符串按照字典序排列。
/** * Description: TODO 题目描述 给定n个字符串,请对n个字符串按照字典序排列。 * 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。 * 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。 * 示例1 * 输入 * 9 * cap * to * cat * card * two * too * up * boat * boot * 输出 * boat * b原创 2021-02-07 09:06:34 · 1098 阅读 · 0 评论 -
输入的第 1 行,为两个正整数,用一个空格隔开:N m (其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)
import java.util.*;/** * Description: TODO 题目描述 * 输入描述: * 输入的第 1 行,为两个正整数,用一个空格隔开:N m (其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。) * 从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据,每行有 3 个非负整数 v p q * (其中 v 表示该物品的价格( v<10000 ), p 表示该物品的重要度( 1 ~ 5 )原创 2021-02-07 09:06:06 · 5040 阅读 · 0 评论 -
明明的随机数
import java.util.Arrays;import java.util.Scanner;/** * Description: TODO 题目描述 * 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000), * 对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序, * 按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例原创 2021-02-04 08:14:50 · 127 阅读 · 0 评论 -
计算字符串最后一个单词的长度,单词以空格隔开。
import java.util.Scanner;/** * Description: TODO 题目描述 * 计算字符串最后一个单词的长度,单词以空格隔开。 * 输入描述: 输入一行,代表要计算的字符串,非空,长度小于5000。 * 输出描述: 输出一个整数,表示输入字符串最后一个单词的长度。 * 示例1 * 输入 hello nowcoder * 输出 8 * @title: Demo018 * Created by 19040838 on 2021.02.01 17:20 */原创 2021-02-04 08:15:34 · 167 阅读 · 6 评论 -
将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。输入: BabA 输出: aABb输入: By?e 输出: Be?y
import java.util.Scanner;/** * Description: TODO 题目描述 * 编写一个程序,将输入字符串中的字符按如下规则排序。 * 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 * 如,输入: Type 输出: epTy * 规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 * 如,输入: BabA 输出: aABb * 规则 3 :非英文字母的其它字符保持原来的位置。 * 如,输入: By?e 输出: Be?y * 注意原创 2021-02-05 09:19:08 · 1686 阅读 · 0 评论 -
假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,
import java.util.Scanner;/** * Description: TODO 题目描述 * 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 * 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份, * 怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。 * 他是这原创 2021-02-05 09:19:34 · 649 阅读 · 0 评论 -
写出一个程序,接受十六进制的数,输出该数值的十进制表示。可输入多个例如: 输入 0xA 0xAA输出 10 170
import java.util.Scanner;/** * Description: TODO 写出一个程序,接受十六进制的数,输出该数值的十进制表示。可输入多个 * 例如: 输入 0xA 0xAA * 输出 10 170 * @title: Demo009 * Created by 19040838 on 2021.01.28 15:46 */public class Demo009 { public static void main(String[] args) {原创 2021-02-03 17:26:09 · 252 阅读 · 1 评论 -
输入一个表达式(用字符串表示),求这个表达式的值。 保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。
import java.math.BigDecimal;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;/**Description: TODO 题目描述输入一个表达式(用字符串表示),求这个表达式的值。保证字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。且表达式一定合法。原创 2021-02-03 17:22:29 · 2554 阅读 · 0 评论 -
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
import java.util.Scanner;/** * Description: TODO 题目描述 * 有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少? * 本题有多组数据。 * 输入描述: 输入int型表示month 输出描述: 输出兔子总数int型 * 示例1 输入 9 输出 34 * @title: Demo007 * Created by 19040838 on 2021.01.28 9:0原创 2021-02-03 17:19:41 · 192 阅读 · 0 评论 -
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶
import java.util.Scanner;/** * Description: TODO *题目描述 * 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下: * 先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水, * 喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶原创 2021-02-03 17:17:18 · 2679 阅读 · 4 评论 -
系统提供人民币(CNY)美元(USD)英镑(GBP)价值转换
import java.util.Scanner;/** * Description: * 系统提供人民币(CNY)美元(USD)英镑(GBP)价值转换 * @author 19040838 * @title: ExchangeRate * Created by 19040838 on 2021.02.01 22:17 */public class ExchangeRate { public static void main(String[] args) { Sca原创 2021-02-02 16:16:08 · 1213 阅读 · 0 评论 -
将一段压缩后的字符串解压缩,并且排序输出。例如:a3b2,输出结果为bbaaa
import java.util.Scanner;/** * @Description * 题目描述 * 将一段压缩后的字符串解压缩,并且排序输出。 * 解压规则:每个字符串后边跟一个数字,表示这个字符串的重复数字将每个字符串的字符重复次数升序排序,并输出结果。 * 例如:a3b2,输出结果为bbaaa * a11b2bac3bad3abcd2 * 思路: * 将每个字符串和数字分别取出存到两个数组 * 对这两个数组进行排序 * 最后进行重复的拼接工作。 * @Author 190原创 2021-02-02 16:14:57 · 1089 阅读 · 0 评论 -
力扣算法题:1441. 用栈操作构建数组
力扣算法题:1441. 用栈操作构建数组给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。请使用下述操作来构建目标数组 target :Push:从 list 中读取一个新元素, 并将其推入数组中。Pop:删除数组中的最后一个元素。如果目标数组构建完成,就停止读取更多元素。题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的数字。请返回构建目标数组所用的操作序列。题目数据保证答案是唯一的。示例 1:输入原创 2020-12-03 17:07:47 · 99 阅读 · 0 评论 -
力扣算法题:1. 两数之和
力扣算法题:1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]public class LeetCode_0001_SumTwoNum { // 测试 public原创 2020-12-02 14:29:42 · 86 阅读 · 0 评论 -
力扣算法题:1370. 上升下降字符串
力扣算法题:1370. 上升下降字符串给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。重复步骤 5 ,直到你没法从 s 中选择字符。原创 2020-12-02 14:15:36 · 107 阅读 · 0 评论 -
选择排序、冒泡排序、插入排序(Java代码)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档选择排序、冒泡排序、插入排序(Java代码)工具类:1、选择排序冒泡排序插入排序工具类:import java.util.Arrays;/** * * @title: ArrayUtils * @Date: 2020.11.26 15:10 */public class ArrayUtils { /** * @Description 随机生成数组 * @Date 2020.11.26 15:原创 2020-12-01 14:14:47 · 216 阅读 · 4 评论