算法
楚瑞涛
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 300 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为O(n2) 。进阶: 你能将算法的时间复杂度降低到O(n log n) 吗?来源:力扣...原创 2020-03-26 18:16:42 · 200 阅读 · 0 评论 -
leetcode 面试题17.16按摩师
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [...原创 2020-03-24 18:11:57 · 351 阅读 · 0 评论 -
leetcode 945 使数组唯一的最小增量
给定整数数组 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]。可...原创 2020-03-22 12:44:01 · 193 阅读 · 0 评论 -
leetcode 2 | 两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2020-03-17 22:11:33 · 132 阅读 · 0 评论 -
leetcode 658 | 找到 K 个最接近的元素
给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例1:输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2:输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3,4]说明:...原创 2020-03-16 18:31:08 · 281 阅读 · 0 评论 -
leetcode 130 | 被围绕的区域
给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充...原创 2020-03-16 13:43:04 · 185 阅读 · 0 评论 -
leetcode 695 | 岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组grid, 一个岛屿是由四个方向 (水平或垂直) 的1(代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,...原创 2020-03-16 11:02:38 · 160 阅读 · 0 评论 -
leetcode 121 | 买卖股票的最佳时机
给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2020-03-15 20:31:22 · 136 阅读 · 0 评论 -
leetcode | 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2020-03-14 22:38:35 · 14333 阅读 · 0 评论 -
美团算法面试题|2020-3-12
题目描述:小美曾经有一个特殊的数组, 这个数组的长度为n。但是她在打恐怖游戏的时候被吓得忘记了这个数组长什么样了。不过她还记得这个数组满足一些条件。首先这个数组的每个数的范围都在L和R之间。包括端点。除此之外,这个数组满足数组中的所有元素的和是k的倍数。但是这样的数组太多了,小美想知道有多少个这样的数组。你只需要告诉她在 模1e9+7意义下的答案就行了。输入:一行四个整数n,k,L,R(...原创 2020-03-12 22:52:19 · 2564 阅读 · 7 评论 -
从上往下打印出二叉树的每个节点,同层节点从左至右打印
可以借助一个队列来实现这个功能。import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public ...原创 2020-02-19 17:28:58 · 322 阅读 · 0 评论 -
矩阵乘法
问题描述 输入两个矩阵,分别是ms,sn大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2 3 21 0 -11 ...原创 2019-04-23 16:28:08 · 415 阅读 · 0 评论 -
Smith 数
题目:若一个合数的质因数分解式逐位相加之和等于其本身逐位相加之和,则称这个数为 Smith 数。如:4937775=3*5*5*65837,而3+5+5+6+5+8+3+7=42,4+9+3+7+7+7+5=42,所以4937775是 Smith 数。求给定一个正整数 N,大于 N 的最小 Smith 数。输入:若干个 case ,每个 case 一行代表正整数 N,输入 0 表示结束。...原创 2019-10-09 20:06:18 · 3647 阅读 · 1 评论 -
经典问题 | 背包
问题描述:有 n 个中联那个分别为{w1,w2.....wn}的物品,他们的价值分别为{v1,v2....vn},给定一个熔炼那个为 W 的背包。设计从这些物品中选取一部物品放入该背包的方案,每个物品要么选中要么不选中,要求选中的物品不仅能够放到背包中,而且具有最大的价值。根据下图求出 W = 7 时的所有结和最佳结果。这道题最简单的思路就是暴力破解,利用穷举法列举所有可能性,,输出...原创 2019-10-17 21:38:29 · 250 阅读 · 0 评论 -
使用穷举法列举元素的所有可能性
所谓穷举法就是将一个问题的所有解题思路全部罗列出来,从中挑出最优解的解题思路。穷举法又称枚举法,其实是一个道理。问题:尝试给定的一个集合,输出集合的所有中可能性。例如:{1,2},它的答案有 4 个,分别是 {},{1},{2},{12}那么如何使用代码来实现这个功能呢?public class QiongJu { public static void main(...原创 2019-10-24 21:31:33 · 1856 阅读 · 0 评论 -
二进制的魅力 | 计算数字中二进制1的个数
算法问题:给出一个十进制整数,计算其对应二进制的1的数量?看到这道题我最早想到的一种办法就是用字符串去解决,先将整数转换为二进制字符后,然后统计每一位1的数量,最终得出结果,代码如下:public class Main { public static void main(String[] args) { int n=4; int count=0; String s...原创 2019-12-01 16:01:44 · 389 阅读 · 0 评论 -
回溯法 | 求解装载问题
问题描述:有 n 个集装箱要装上一艘载重量为 W 的轮船,其中集装箱 i (1<=i<=n) 的重量,为wi。子啊装在体积不受限制的情况下,将尽可能重的集装箱装上轮船,当重量相同时要求选取的集装箱个数尽可能少,编写一个实验程序采用回溯法求解。要求采用适当的剪枝条件提高效率,左孩子结点剪枝的条件是只装载满足重量要求的集装箱,右孩子结点剪枝的条件是至多要选中 3 个集装箱。例如,...原创 2019-12-06 19:26:58 · 6082 阅读 · 1 评论 -
华为研发工程师面试题——三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?
某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝输入描述:输入文件最多包含10...原创 2020-02-13 15:06:04 · 4876 阅读 · 1 评论 -
位运算的之美(合集)
题目一一个数组里除了某-一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。暴力思路:使用Map记录数字出现的数量,最后找出出现一次的。巧妙思路:使用异或符号(^),异或符号为不进位加法,两个相同的数字异或为0,所以可以利用这个性质将所有数字异或一遍,最终的就是答案答案。 public static void main(String[] args) { ...原创 2020-02-09 22:20:28 · 172 阅读 · 0 评论 -
LeetCode 1266 访问所有点的最小时间
LeetCode 1266平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。示例 1:输入:points = [...原创 2020-01-18 08:21:32 · 372 阅读 · 0 评论
分享