- 博客(32)
- 收藏
- 关注
转载 找工作(有序表)
为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<=100000)和小伙伴的数量M(M<=100000)。接下来的N行每行包含两个正整数,分别表示该项工作的难度Di(
2022-03-06 22:58:16 128
原创 线段树 - java通用模板
LeetCode-307线段树是一种非常灵活的数据结构,它可以用于解决多种范围查询问题,比如在对数时间内从数组中找到最小值、最大值、总和、最大公约数、最小公倍数等。数组 A[0,1,…,n−1] 的线段树是一个二叉树,其中每个节点都包含数组的一个子范围 [i…j] 上的聚合信息(最小值、最大值、总和等),其左、右子节点分别包含范围 [i … (i+j)/2]和 [(i+j)/2 + 1, j]上的信息。class NumArray { public interface Merger<E
2022-01-06 22:28:33 430
原创 字符串分割
题目描述给定一个由若干a和b组成的字符串s,请你计算并返回将该字符串分割成两个非空子字符串(即左子字符串和右子字符串)所能获得的最大得分。【分割字符串的得分】为左子字符串中a的数量加上右子字符串中b的数量。分析设计一道典型的前缀和题目,分别计算左边a的数量和右边b的数量,然后计算各个下标的得分取最大值。代码实现public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param str
2021-10-24 14:09:25 258
原创 Java代码块
public class ConstructorTest1 { {//构造代码块 System.out.println("执行构造代码块"); } public ConstructorTest1() { System.out.println("执行无参构造函数"); } public ConstructorTest1(String string) { System.out.println("执行有参构造函数");
2021-10-14 23:00:49 96
原创 Leetcode_32.最长有效括号
解题思路:结合题目,有最长这个字眼,可以考虑尝试使用动态规划进行分析。这是一个最值型动态规划的题目。动态规划题目分析的 4 个步骤:确定状态 研究最优策略的最后一步 化为子问题转移方程 根据子问题定义得到初始条件和边界情况计算顺序首先,我们定义一个 dp[] 数组,其中第 i 个元素表示以下标为 i 的字符结尾的最长有效子字符串的长度。确定状态:最后一步:对于最优的策略,一定有最后一个元素 s[i].所以,我们先看第 i 个位置,这个位置的元素 s[i] 可能
2021-07-20 20:02:20 162
原创 Leetcode_674 最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[ i ] < nums[i + 1] ,那么子序列 [nums[ l ], nums[l + 1], …, nums[r - 1], nums[ r ]] 就是连续递增子序列。0 ≤ nums.length ≤104−109 ≤ nums[ i ] ≤ 109示例1:输入:nums =
2021-07-19 21:33:15 258
原创 删除有序数组中的重复项
给你一个有序数组 nums ,请你原地 删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicates(nums)
2021-07-19 20:17:53 87
原创 计算校验码
【问题描述】传送一个B(B≤16)进制的数值N时,最后加上一个一位(B进制的)校验码,使得N加上校验位后能被B-1整除。比如十进制的数值12310,其校验码就是3,因为十进制数值123310能被9整除。16进制的数7816,其校验码为0,因为16进制的78016是15的倍数。超过十进制后,用字母a表示10,字母b表示11,字母c表示12,字母d表示13,字母e表示14,字母f表示15。告诉你进制B,以及一个B进制的正整数N,要求你计算正整数N在B进制下的校验码。【输入形式】输入第一行正整数t (10
2021-07-16 22:02:28 1457 1
原创 可删除的点
【问题描述】平面上有n个不同的点,没有在Y轴的点,检查是否存在这样一个点,将其删除后其余所有的点均位于Y轴的同一边。【输入形式】输入第一行包含一个正整数n(2<=n<=105)。接下来的n行,包含所有点的坐标,第i行包含两个整数xi和yi(|xi|、|yi|<=109,xi<>0)。【输出形式】如果存在这样的点,则输入"Yes",否则输出"No"。【样例输入】31 1-1 -12 -1【样例输出】Yes**易错点:**只考虑到y轴某一侧有且仅有一个点
2021-07-16 21:52:29 175
原创 循环数
【问题描述】循环数是n位长度的整数,当乘以从1到n的任何整数时,产生原始数字的“循环”。也就是说,如果考虑最后一个数字之后的数字“绕”回到第一个数字,两个数字中的数字序列将是相同的,尽管它们可能从不同的位置开始。例如,数字142857是循环的,如下表所示: 142857 *1 = 142857 142857 *2 = 285714 142857 *3 = 428571 142857 *4 = 571428 142857 *5 = 714285 142857
2021-07-16 21:18:40 3332 2
原创 电能消耗
【问题描述】汤姆对他最喜欢的笔记本电脑的耗电量很感兴趣。他的笔记本电脑有三种模式。在正常模式下,笔记本电脑每分钟消耗P1瓦。在汤姆最后一次移动鼠标或触摸键盘后的T1分钟,屏幕保护程序启动,每分钟的功耗变化为P2瓦。最后,从屏幕保护程序启动到T2分钟后,笔记本电脑切换到“睡眠”模式,每分钟消耗P3瓦。 当笔记本电脑处于第二或第三模式时,如果汤姆移动鼠标或触摸键盘,则切换到第一种(正常)模式。 汤姆使用笔记本电脑工作的时间可以分为n个时间间期[l1, r1]、[l2, r2]、…、[ln, rn]。在每个间期
2021-07-16 16:25:54 225
原创 字符串逆序数排序
【问题描述】定义一个字符串的无序度为所有位置后面的字母比该位置的字母小的总数之和。比如"DAABEC’'这个字符串的无序度是5,因为D后面有4个位置比它小(AABC),E后面有1个比它小(C),其它位置后面没有比自己小的。" AACEDGG “的无序度为1(E后面有一个D比它小)。” ZWQM "的无序度为6,每个位置后面所有的字母都比它小。现在你的任务是给定一些字符串(只由大写字母组成),把他们按照无序度从小到大排序,如果无序度一样,那么就按照输入的相对顺序排序。【输入形式】单组测试数据。第一行有
2021-07-16 15:25:20 460
原创 开关与灯
【问题描述】给定n个开关和m个灯,第i个开关只能打开部分灯。矩阵a包含n行m列,当aij=1时表示开关i可以打开灯j,否则aij=0。开始时所有的m个灯都是关着的。开关只能从状态"关"到"开"。这意味着,对于每个可以打开某个灯的开关,无论你按多少次,这个灯都是开的。确保当你按下所有开关时,所有的灯都能打开,考虑是否可以忽略其中某个开关也能打开所有的灯。你的任务是确定是否存在这样的开关可以忽略,而使用其余的n-1个开关来打开所有m个灯。【输入形式】输入第1行包含两个整数n和m(1<=n, m&l
2021-07-14 22:34:21 329
原创 Java TreeSet有序集合
TreeSet存入数据后自动调用元素的compareTo(Object obj) 方法,自动对数据进行排序,所以输出的数据是经过排序(升序)的数据。注:compareTo方法返回值有:负数,零,正数。分别表示小于,等于,大于对于存入自定义的对象元素,要重写元素的public int compareTo(Object obj)方法元素定义时,需要实现Comparable接口import java.util.Iterator;import java.util.TreeSet;public cla
2021-07-14 17:16:12 513
原创 电话号码
【问题描述】Vasya有几本电话簿,记录了他的朋友们的电话号码,每一个朋友都可以有一或几个电话号码。Vasya决定整理关于朋友电话号码的信息。给定n个字符串,来自于Vasya的电话簿中的条目。每一条都以朋友的姓名开头,然后跟着当前条目中的电话号码个数,然后是本人的电话号码。有可能几个相同的电话被记录在同一个记录中。Vasya还认为,如果电话号码a是电话号码b的后缀(也就是说,号码b以a结尾),这两个号码被当作同一个电话号码,那么a被认为是无城市代码,它不应该被考虑。输出整理后Vasya朋友的电话号码
2021-07-13 18:42:19 241
原创 二叉树遍历,从前序、中序到后序
【问题描述】二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,深度遍历有前序、中序以及后序三种遍历方法。三种基本的遍历思想为:前序遍历:根结点 —> 左子树 —> 右子树中序遍历:左子树—> 根结点 —> 右子树后序遍历:左子树 —> 右子树 —> 根结点比如,求以下二叉树的各种遍历前序遍历:1 2 4 5 7 8 3 6中序遍历:4 2 7 5 8 1 3 6后序遍历:4 7
2021-07-13 16:51:47 412
原创 错误的里程表
【问题描述】三月八日,小明买了台新车。但很快小明发现汽车的里程表有问题:里程表上每一位都不显示数字3和数字8,也就是说直接从数字2跳到数字4,直接从数字7跳到数字9。小明纳闷:这车到底行驶里程是多少。现在,小明向你求助:根据里程表显示的数字,给出真实的行驶里程。【输入形式】输入有多组测试数据。输入第一行正整数T,表示有多少组测试数据。后面有T行,每行一个非负整数,表示里程表显示数字,里面不含有数字3和8。该数字不超过10位。40%的测试数据组数T 10≤T≤ 102;30%的测试数据组数T
2021-07-13 16:06:30 333 1
原创 PAT 1008 数组元素循环右移问题
1008 数组元素循环右移问题 (20 分)一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A_{0}A0 A1A_1A1 ⋯ AN−1A_{N−1}AN−1)变换为(AN−MA_{N−M}AN−M ⋯ AN−1A_{N−1}AN−1 A0A_{0}A0 A1A_{1}A1 ⋯ AN−M−1A_{N−M−1}AN
2021-07-12 20:11:05 95
原创 PAT 1007 素数对猜想
1007 素数对猜想 (20 分)让我们定义 dnd_{n}dn 为:dn=pn+1−pnd_{n}=p_{n+1}−p_{n}dn=pn+1−pn,其中pip_{i}pi是第i个素数。显然有d1d_{1}d1=1,且对于n>1有dnd_{n}dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。【输入
2021-07-12 15:51:45 93
原创 PAT 1006 换个格式输出整数
1006 换个格式输出整数 (15 分)让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。【输入格式】每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。【输出格式】每个测试用例的输出占一行,用规定的格式输出 n。输入样例 1:234输出样例 1:BBSSS1234
2021-07-12 11:50:22 63
原创 PAT 1005 继续(3n+1)猜想
PAT 1005 继续(3n+1)猜想 (25 分)卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数 n
2021-07-12 10:44:53 66
原创 拳王阿里
【问题描述】阿里是上个世纪美国最著名的拳击手,阿里在20年的时间里多次获得重量级拳王称号。不过不幸的是,他在之后患上了帕金森氏病。他参加了许多比赛,多到连自己都数不清了。有这么一段时间,他总是参加各种不同的比赛,以至于他自己也不知道从第一场比赛开始到最后一场比赛结束到底用了多长时间。他只记得比赛的第一天是星期几(S),最后一场比赛的最后一天是星期几(E)。他还记得比赛的总天数(包括第一和最后一天)不少于L天,也不多于R天。给定S和E,能否唯一确定参加比赛总天数(包含该段时间内比赛间的间隔天数)?【输入
2021-07-10 23:17:57 249
原创 PAT_1003 我要通过!
【问题描述】“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由
2021-07-10 22:30:20 82
原创 众数
【问题描述】一组数据中出现最多的数,称为众数。比如1 2 3 3众数为3。一组数据中也可能有多个众数,以最先出现的作为众数。比如2 2 3 3众数为2。问题是一组按升序排好的数据,指出它的众数。【输入形式】有多组测试数据(不超过100组测试数据)。每组测试数据占两行,第一行是正整数N:表示这组测试数据中数据项数。第二行是N个用空格隔开的正整数,表示这组测试数据的数据元素。每个数据元素都不大于10000。N=0,表示输入结束,并且不需要处理。40%的测试数据N 1 ≤N≤ 10;30
2021-07-09 22:41:56 470
原创 世界杯来了
【问题描述】2018年俄罗斯世界杯结束了,法国获得冠军,全世界球迷度过了一个非常愉快的夏天。作为中国球迷,不能总是看别人踢球,这不福利来了,根据FIFA(国际足联)及全体成员协会的一致决定,2118年世界杯将在中国举办,作为东道主,中国队将无需参加预选赛而直接参加决赛阶段的比赛。比赛规则如下:总共n(n为偶数)个球队参加比赛,按照分组赛积分排名,前n/2的球队进入淘汰赛,积分排名的规则如下:球队获胜得3分,平局得1分,失利得0分,按照积分递减、净胜球递减以及进球数递减方式排名。编写一个程序,根据给出的
2021-07-09 22:33:34 402
原创 合法的括号串
【问题描述】一个合法的括号串,是指只包含括号的串,如果满足如下条件:(1)<> () [] {} 这四对括号是合法的;(2)如果r是合法括号串,则 ® [r] {r}也是;(3)如果r,s是合法括号串,则rs也是;所以<<>> , [<>{}(())],[({<>})]是合法的括号串,而)(,[( ])就不是。【输入形式】输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。后面有t行,每行一个只包含8种括号符号的
2021-07-09 22:01:20 365
原创 IP地址转换
IP地址转换 (20 分)一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。【输入格式】输入在一行中给出32位二进制字符串。【输出格式】在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。输入样例:【输入样例】11001100100101000001010101110010【输出样例】204.148.21.114import java.util.Scanne
2021-07-09 21:50:26 556
原创 求点分十进制IP地址的二进制表示中一共有多少位是1
##【问题描述】一个IP地址由32位二进制的数组成,比如:111111111111111111111111000000002为了便于记忆,我们将8个二进制位用一个十进制数表示,一个IP地址由四个十进制数表示,上述的IP地址表示为:255.255.255.0现在给你一个上述形式的IP地址,请回答IP地址的32个二进制位中,有多少位是1。如IP地址为255.255.255.0,其中24位是1。###【输入形式】有多组测试数据。测试数据第一行是一个正整数T,表示测试数据组数。每组测试数据是一个
2021-07-09 21:35:43 417
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人