自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 腾讯2020-视野争夺

小Q在进行一场竞技游戏,这场游戏的胜负关键就在于能否能争夺一条长度为L的河道,即可以看作是[0,L]的一条数轴。这款竞技游戏当中有n个可以提供视野的道具−真视守卫,第i个真视守卫能够覆盖区间[xi,yi]。现在小Q想知道至少用几个真视守卫就可以覆盖整段河道。输入描述:输入包括n+1行。第一行包括两个正整数n和L(1<=n<=105,1<=L<=109)接下来的n行,每行两个正整数xi,yi(0<=xi<=yi<=109),表示第i个真视守卫覆盖的区间。输

2020-08-23 18:40:17 283

原创 腾讯2020-放假

由于业绩优秀,公司给小Q放了 n 天的假,身为工作狂的小Q打算在在假期中工作、锻炼或者休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最少需要休息几天。输入描述:第一行一个整数 表示放假天数第二行 n 个数 每个数为0或1,第 i 个数表示公司在第 i 天是否营业第三行 n 个数 每个数为0或1,第 i 个数表示健身房在第 i 天是否营业(1为营业 0为不营业)输

2020-08-23 18:36:52 335

原创 腾讯2020-2

小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)输出一行,包含空格分割的n个数字vi,分别代表小Q在第i栋楼时能看到的楼的数量。输入例子1:65 3 8 3 2 5输出例子1:3 3 5 4 4 4例子说明1:当小Q处于位置3时,他可以向前看到位置2,1处的楼,向后看到位置4,6处的楼

2020-08-23 18:29:21 218

原创 零钱兑换

有限制的零钱兑换public class coin_1 { public static void main(String[] args) { // TODO Auto-generated method stub int[] money= {1,5,10,50,100}; int[] num= {5, 2 ,2, 3 ,5}; System.out.println(solve(money,num,47)); } public static int solve(int[]

2020-08-23 17:52:52 181

原创 考试策略

小明同学在参加一场考试,考试时间2个小时。试卷上一共有n道题目,小明要在规定时间内,完成一定数量的题目。 考试中不限制试题作答顺序,对于 i 第道题目,小明有三种不同的策略可以选择: (1)直接跳过这道题目,不花费时间,本题得0分。(2)只做一部分题目,花费pi分钟的时间,本题可以得到ai分。 (3)做完整个题目,花费qi分钟的时间,本题可以得到bi分。小明想知道,他最多能得到多少分。输入描述:第一行输入一个n数表示题目的数量。接下来n行,每行四个数p_i,a_i,q_i,b_i。(1≤n≤

2020-08-15 15:50:29 121

原创 种花

公园里有N个花园,初始时每个花园里都没有种花,园丁将花园从1到N编号并计划在编号为i的花园里恰好种A_i朵花,他每天会选择一个区间[L,R](1≤L≤R≤N)并在编号为L到R的花园里各种一朵花,那么园丁至少要花多少天才能完成计划?输入描述:第一行包含一个整数N,1≤N≤10^5。第二行包含N个空格隔开的整数A_1到A_N,0≤A_i≤10^4。输出描述:输出完成计划所需的最少天数。输入例子1:54 1 8 2 5输出例子1:14import java.util.Scanner;

2020-08-15 15:46:26 160

原创 外卖满减

你打开了美了么外卖,选择了一家店,你手里有一张满X元减10元的券,店里总共有n种菜,第i种菜一份需要A_i元,因为你不想吃太多份同一种菜,所以每种菜你最多只能点一份,现在问你最少需要选择多少元的商品才能使用这张券。输入描述:第一行两个正整数n和X,分别表示菜品数量和券的最低使用价格。(1≤n≤100, 1≤X≤10000) 接下来一行n个整数,第i个整数表示第i种菜品的价格。(1≤A_i≤100)输出描述:一个数,表示最少需要选择多少元的菜才能使用这张满X元减10元的券,保证有解。输入例子1:5

2020-08-15 15:45:18 118

原创 最长全1串

给你一个01字符串,定义答案=该串中最长的连续1的长度,现在你有至多K次机会,每次机会可以将串中的某个0改成1,现在问最大的可能答案输入描述:输入第一行两个整数N,K,表示字符串长度和机会次数第二行输入N个整数,表示该字符串的元素( 1 <= N <= 300000, 0 <= K <= N )输出描述:输出一行表示答案输入例子1:10 21 0 0 1 0 1 0 1 0 1输出例子1:5import java.util.Scanner;public

2020-08-15 15:42:50 110

原创 美团骑手包裹区间分组

2110年美团外卖火星第3000号配送站点有26名骑手,分别以大写字母A-Z命名,因此可以称呼这些骑手为黄家骑士特工A,黄家骑士特工B…黄家骑士特工Z,某美团黑珍珠餐厅的外卖流水线上会顺序产出一组包裹,美团配送调度引擎已经将包裹分配到骑手,并在包裹上粘贴好骑手名称,如RETTEBTAE代表一组流水线包裹共9个,同时分配给了名字为A B E R T的5名骑手。请在不打乱流水线产出顺序的情况下,把这组包裹划分为尽可能多的片段,同一个骑手只会出现在其中的一个片段,返回一个表示每个包裹片段的长度的列表。输入描述:

2020-08-15 15:38:56 1637

原创 订单分配

打车派单场景, 假定有N个订单, 待分配给N个司机。每个订单在匹配司机前,会对候选司机进行打分,打分的结果保存在N*N的矩阵A, 其中Aij 代表订单i司机j匹配的分值。假定每个订单只能派给一位司机,司机只能分配到一个订单。求最终的派单结果,使得匹配的订单和司机的分值累加起来最大,并且所有订单得到分配。输入描述:第一行包含一个整数N,2≤N≤10。第二行至第N+1行包含N*N的矩阵。输出描述:输出分值累加结果和匹配列表,结果四舍五入保留小数点后两位(注意如果有多组派单方式得到的结果相同,则有限

2020-08-15 15:36:55 809

原创 字符串模式匹配

给出两个字符串,分别是模式串P和目标串T,判断模式串和目标串是否匹配,匹配输出 1,不匹配输出 0。模式串中‘?’可以匹配目标串中的任何字符,模式串中的 ’*’可以匹配目标串中的任何长度的串,模式串的其它字符必须和目标串的字符匹配。例如P=a?b,T=acb,则P 和 T 匹配。a?bab输出例子1:0输入例子2:a*bab输出例子2:1import java.util.Scanner;public class Main{ public static void main(Str

2020-08-15 15:34:51 211

原创 表达式求值

给出一个布尔表达式的字符串,比如:true or false and false,表达式只包含true,false,and和or,现在要对这个表达式进行布尔求值,计算结果为真时输出true、为假时输出false,不合法的表达时输出error(比如:true true)。表达式求值是注意and 的优先级比 or 要高,比如:true or false and false,等价于 true or (false and false),计算结果是 trueimport java.util.Scanner;im

2020-08-15 15:34:03 180

原创 每日一题:LeetCode之合并区间

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。贪心算法 public int[][] merge(int[][] intervals) { Arr

2020-07-08 12:02:05 128

原创 每日一题:Leetcode之将有序数组转会为二叉树

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5]public TreeNode sortedArrayToBST(int[] nums) { return build(nums,0,nums.length-1); } public TreeNode build(in

2020-07-03 13:11:30 98

原创 每日一题:Leetcode之K个一组翻转链表

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实

2020-07-02 17:35:36 259

原创 每日一题:LeetCode之反转链表Ⅱ

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL迭代,找到m的位置,并记录m上一个位置 pre, m和后面一个数字逐一交换,后面的数字换到pre指针后面1->2->3->4->5->NULL1->3->2->4-&

2020-07-02 13:22:26 101

原创 美图2020笔试题:合并金币

有 N 堆金币排成一排,第 i 堆中有 C[i] 块金币。每次合并都会将相邻的两堆金币合并为一堆,成本为这两堆金币块数之和。经过N-1次合并,最终将所有金币合并为一堆。请找出将金币合并为一堆的最低成本。其中,1 <= N <= 30,1 <= C[i] <= 100输入描述:第一行输入一个数字 N 表示有 N 堆金币第二行输入 N 个数字表示每堆金币的数量 C[i]输出描述:输出一个数字 S 表示最小的合并成一堆的成本输入例子1:43 2 4 1输出例子1:20

2020-06-07 17:20:32 441

原创 每日一题:LeetCode之螺旋矩阵

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]右下左上一直循环,直到四个方向都走不了 public List<Int

2020-05-12 17:58:11 256

原创 每日一题:LeetCode之矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]储存0的位置public void setZeroes(int[][] matrix) { List<int[]> list = new ArrayList<>(); for(int i = 0;

2020-05-12 17:03:30 162

原创 每日一题:LeetCode之使数组唯一的最小增量

给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一的。先排序数组,再逐个计算move的次数 public

2020-05-09 16:26:56 164

原创 每日一题:LeetCode之去除重复字母

给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”思路:使用栈,并且要使字典序最小,若栈顶元素大于当前元素并且栈顶元素不是唯一的,后续还会出现,则将栈顶元素弹出,将当前元素入栈。public String removeDuplicateLetters(String s) {

2020-05-09 16:22:58 334

原创 每日一题:LeetCode之最长有效括号

给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”思路:动态规划,用dp[i]表示以i为结尾时最长有效括号的长度当s[i]==’(‘时,不做操作,当 s[i]=’)‘时,我们判断 i 之前是否有和‘)’相匹配的括号,由于每个位置只有两种情况要么‘(’ 要么时是’)’。第一种情况,若s[i-1]=’

2020-05-09 16:11:18 90

原创 每日一题:LeetCode之二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和

2020-05-09 15:30:37 110

原创 每日一题:LeetCode之二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1 的最近公共

2020-05-09 15:27:02 134

原创 每日一题:LeetCode之翻转二叉树

翻转一棵二叉树。输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1每个节点,左右子节点相互调换public TreeNode invertTree(TreeNode root) { if(root==null) return root; TreeNode lef

2020-05-09 15:15:28 80

原创 每日一题:LeetCode之对称二叉树

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3 当两个节点相同并且,一个节点的左节点和右节点等于另一个节点的右节点和左节点,即就是镜像的两课树。public boolean isSymmetric(TreeNode root) { retur...

2020-05-04 15:22:04 139

原创 每日一题:LeetCode之合并K个排序链表

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6使用分治法,一直划分列表,直到一个单位格只剩下一个列表时,在两两合并。public ListNode mergeKLists(Li...

2020-05-04 15:16:09 101

原创 每日一题:LeetCode之搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。在有序的数组部分使用二分发查找public int search(int[...

2020-05-04 15:10:56 88

原创 每日一题:LeetCode之在排序数组中查找元素的第一个位置和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。使用二分法 public int[] searchRange(int[] nums, int target) { int[] res={-1,-1}; ...

2020-05-04 15:09:28 67

原创 每日一题:LeetCode之各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 public int addDigits(int num) { while(num/10!=0){ int res=0; whi...

2020-04-30 11:32:06 241 2

原创 每日一题:LeetCode之字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”普通的乘法思路public String multiply(String num1, S...

2020-04-30 11:30:36 90

原创 每日一题:LeetCode之回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 public boolean isPalindrome(int x) { if(x<0) ...

2020-04-30 11:24:51 76

原创 每日一题:LeetCode之字符串转换整数

请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字...

2020-04-30 11:23:30 88

原创 每日一题:LeetCode之整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321public int reverse(int x) { int res = 0 ; while(x != 0){ int temp = x % 10 + res * 10; /...

2020-04-30 11:18:32 122

原创 每日一题:LeetCode之使用最小花费爬楼梯

数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从cost[1]开始,然后走两步即...

2020-04-21 21:47:34 124

原创 每日一题:LeetCode之最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。**思路:**遍历数组,用sum表示连续子数组的和,当sum大于0时,说明当前数字前面若干个连续的数和大于0,对目前的数字有增益,则sum+=nums[i]...

2020-04-21 21:29:19 126

原创 每日一题:LeetCode之统计全为1的正方形子矩阵

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。示例 1:输入:matrix =[[0,1,1,1],[1,1,1,1],[0,1,1,1]]输出:15解释:边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = ...

2020-04-20 16:28:42 237

原创 每日一题:LeetCode之最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路:动态规划,dp[i][j]表示i-j是否为回文字符串,若s[i]==s[j]||j-i<=2,dp[i][j]=dp[i+1][j-1]。publi...

2020-04-20 16:13:32 69

原创 每日一题:LeetCode之正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “aa”p = “...

2020-04-19 20:02:08 211

原创 每日一题:LeetCode之杨辉三角

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路:每一行第一个和最后一个都是1,其余的为上一层的前两位的和public List<List<Integer>> generate(int numRows) { ...

2020-04-19 18:53:27 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除