![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
校招算法题
李大洲
我有一壶酒,足以慰风尘。尽倾江海里,赠饮天下人。
展开
-
力扣300-最长上升子序列(有点难)
题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是[2,3,7,101],它的长度是 4。思路:题目中要我们求长度最长的递增子序列,没要求子序列必须连续。假设dp(i)表示以第i个数字为结尾的最长上升子序列的长度。即在[0, ..., i]的范围内,选择以数...原创 2019-09-05 22:01:27 · 308 阅读 · 0 评论 -
力扣452-用最少数量的箭引爆气球
题目:在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart≤ x ...原创 2019-08-30 21:59:24 · 742 阅读 · 0 评论 -
力扣435-无重叠区间
题目:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。class Solution { public int eraseOverlapIntervals(int[][] intervals) { if(intervals.l...原创 2019-08-30 21:37:38 · 294 阅读 · 0 评论 -
力扣455-分发饼干
题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj >= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值...原创 2019-08-29 22:01:45 · 180 阅读 · 0 评论 -
力扣75-颜色分类(荷兰国旗问题)
题目:给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。class Solution { public void sortColors(int[] nums) { ...原创 2019-08-28 22:43:14 · 135 阅读 · 0 评论 -
力扣347-前K个高频元素
题目:给定一个非空的整数数组,返回其中出现频率前k高的元素。法一:class Solution { public List<Integer> topKFrequent(int[] nums, int k) { HashMap<Integer,Integer> map = new HashMap<>(); fo...原创 2019-08-28 21:27:03 · 277 阅读 · 0 评论 -
力扣215-数组中的第K个最大元素
题目:在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。法一:public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[nums.length - k];}法二:class Solution...原创 2019-08-28 20:58:31 · 221 阅读 · 0 评论 -
力扣524-通过删除字母匹配到字典里最长单词
题目:给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。法一:在未排序的字典 dd 中查找字符串 xx 满足 xx 是 ss 的子序列。如果 xx 被找到了,我们将它与其他匹配的字符串做比较,直到找到长度最长、字典序最小的单词为止。clas...原创 2019-08-28 09:42:42 · 183 阅读 · 0 评论 -
力扣141-环形链表
题目:给定一个链表,判断链表中是否有环。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * }...原创 2019-08-27 22:41:25 · 152 阅读 · 0 评论 -
力扣406-根据身高重建队列
题目:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4],...原创 2019-08-31 22:28:43 · 253 阅读 · 0 评论 -
力扣121-股票的最大利润
题目121:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。class Solution { public int maxProfit(int[] prices) { if(prices==null || price...原创 2019-09-01 21:56:32 · 353 阅读 · 0 评论 -
01背包问题(写的很好)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-09-03 22:31:08 · 164 阅读 · 0 评论 -
力扣62-不同路径
题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?class Solution { public int uniquePaths(int m, int n) { int[][] dp = n...原创 2019-09-03 21:10:37 · 151 阅读 · 0 评论 -
力扣198-打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。class Solution { public int rob(int[] nums) {...原创 2019-09-03 20:28:19 · 170 阅读 · 0 评论 -
力扣64-最小路径和
题目:给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。class Solution { public int minPathSum(int[][] grid) { if(grid==null || grid.length==0){ return ...原创 2019-09-02 22:39:41 · 223 阅读 · 0 评论 -
力扣53-最大子序和
题目:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。class Solution { public int maxSubArray(int[] nums) { if(nums==null || nums.length==0){ return 0; } int...原创 2019-09-02 21:05:10 · 153 阅读 · 0 评论 -
力扣665-非递减数列
题目:给定一个长度为n的整数数组,你的任务是判断在最多改变1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i (1 <= i < n),满足array[i] <= array[i + 1]。class Solution { public boolean checkPossibility(int[]...原创 2019-09-02 20:59:47 · 216 阅读 · 0 评论 -
力扣392-判断子序列
题目:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例...原创 2019-09-01 22:43:08 · 109 阅读 · 0 评论 -
力扣605-种花问题
题目:假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能则返回True,不能则返回False。class Solution { public boolean can...原创 2019-09-01 22:15:24 · 126 阅读 · 0 评论 -
力扣88-合并两个有序数组
题目:给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i=m-1; int j=n-1; int k...原创 2019-08-27 22:30:55 · 143 阅读 · 0 评论 -
力扣680-验证回文字符串Ⅱ
题目:给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。class Solution { public boolean validPalindrome(String s) { char[] array = s.toCharArray(); int i=0; int j=array.length-1; w...原创 2019-08-27 22:18:41 · 173 阅读 · 0 评论 -
力扣345-反转字符串中的元音字母
题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。class Solution { HashSet set = new HashSet(Arrays.asList('a','e','i','o','u','A','E','O','I','U')); public String reverseVowels(String s) { if(s==nu...原创 2019-08-27 22:19:47 · 121 阅读 · 0 评论 -
剑指offer第二版第10(2)题:青蛙跳台阶问题(也是斐波那契数列问题)(java)
思路:public class Solution { //关键是分析!跟斐波那契数列一样道理 public int JumpFloor(int target) { if(target<=0) return 0; if(target==1||target==2) ...原创 2018-11-24 16:30:12 · 101 阅读 · 0 评论 -
剑指offer第二版第五题:替换空格
public class Solution { //关键还是要熟悉字符串中的类String、StringBuffer public String replaceSpace(StringBuffer str) { int cnt=0; //计算空格数 for(int i=0;i<=str.l...原创 2018-11-22 15:10:15 · 138 阅读 · 0 评论 -
剑指offer第二版第四题:二维数组中的查找
public class Solution { public boolean Find(int target, int [][] array) { boolean flag=false; int rows=array.length; //二维数组的行 int columns=array[0].length; ...原创 2018-11-22 09:37:56 · 156 阅读 · 0 评论 -
剑指offer第二版第10(1)题:斐波那契数列(java)
题目一:斐波那契数列思路:法一:递归public class Solution { public int Fibonacci(int n) { if(n==0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci...原创 2018-11-23 17:18:10 · 75 阅读 · 0 评论 -
剑指offer第二版第九题:用两个栈实现队列(java)
思路:import java.util.Stack; //关键是思路!public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integ...原创 2018-11-23 17:10:42 · 93 阅读 · 0 评论 -
剑指offer第二版第八题:二叉树中的下一个节点
思路:/* //用手写与敲代码不一样!用手写感觉是对的,其实是错的!public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; ...原创 2018-11-23 17:07:34 · 83 阅读 · 0 评论 -
剑指offer第二版第三题:数组中重复的数字
题目二:不修改数组找出重复的数字public class NO3in2 { /** * 避免使用辅助空间 */ public int getDuplicate(int[] arr) { if (arr == null || arr.length <= 0) { System.out.println("数组输入无...原创 2018-11-21 12:16:12 · 133 阅读 · 0 评论 -
剑指offer第二版第三题:数组中重复的数字
题目一:找出数组中重复的数字法一:import java.util.HashMap;public class Solution { // Parameters: // numbers: an array of integers // length: the length of array numbers // dupl...原创 2018-11-21 12:09:50 · 223 阅读 · 0 评论 -
剑指offer第二版第11题:旋转数组的最小数字(java)
思路:import java.util.ArrayList;public class Solution { public int minNumberInRotateArray(int [] array) { if(array.length==0||array==null) return 0; int i=0; int j=ar...原创 2018-11-24 16:32:10 · 114 阅读 · 0 评论 -
剑指offer第二版第12题:矩阵中的路径(java)
思路:public class Solution { //注意迭代! public boolean hasPath(char[] matrix, int rows, int cols, char[] str) { if(matrix==null||rows<=0||cols<=0||str==null) return false;...原创 2018-11-24 16:34:19 · 136 阅读 · 0 评论 -
力扣633-平方数之和
给定一个非负整数c,你要判断是否存在两个整数a和b,使得a2+ b2= c。class Solution { public boolean judgeSquareSum(int c) { int i=0; int j=(int)Math.sqrt(c); while(i<=j){ if(i*i...原创 2019-08-27 22:20:13 · 148 阅读 · 0 评论 -
斐波那契数列的四种实现方式:
最近在刷算法题,发现之前写的斐波那契数列,用的是递归方式,感觉不是很好,尝试一下用别的方法。总共有4种,话不多说,贴代码。法一:递归,时间复杂度是指数级。public class Solution { public int Fibonacci(int n) { if(n==0) return 0; if(n==1) ...原创 2019-08-11 14:07:51 · 587 阅读 · 0 评论 -
笔试题:求整数序列中三个数的最大公约数:
题目:有一组正整数序列a1,a2,…an,请计算出其中满足最大公约数为1的三个数ai,aj,ak的组合的数量,ai,aj,ak范围为1<=i<j<k<=N。输入描述:第一行输入包含一个整数N,表示序列的长度;第二行包含N个空格分隔的整数,分别为a1,a2…an输出描述:输出为一行,内容满足条件的组合的数量;示例:输入:81 2 3 4 5...原创 2019-05-07 22:04:33 · 1633 阅读 · 0 评论 -
全排列之JAVA实现
转载自:https://blog.csdn.net/qq_16403141/article/details/80548282全排列的基本思想是:把待全排列记录分为两个部分:(1) 第一个记录(2) 剩下的所有元素所有记录的全排列就是所有可能出现在第一个位置的记录与剩下所有元素的全排列。以[1,2,3]为例,1,2,3的全排列可以看作是1,[2,3的全排列]...转载 2019-03-28 09:47:16 · 122 阅读 · 0 评论 -
数据结构与算法题:大端和小端
华为实习编程题:大端:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。现定义一种字符编码,其编码格式如下:9个字符为一个编码组,第一个字符表示后序8个字符的字节序(字符‘0’表示小端,字符‘1’表示大端)。后续8个字符,每个字符代表一个字节。编码解析之后字符串采用大端模式。现输入一个数字和一个字符串,...原创 2019-03-28 08:59:17 · 1454 阅读 · 0 评论 -
剑指offer第二版第七题:重建二叉树
思路:public class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] in) { TreeNode root=reConstructBinaryTree(pre,0,pre.length-1,in,0,in.length-1); return root; ...原创 2018-11-23 12:12:39 · 94 阅读 · 0 评论 -
剑指offer第二版第六题:从尾到头打印链表
思路:/** //没有打印,返回一个ArrayList类型的集合* public class ListNode { //关键还是熟悉List集合* int val;* ListNode next = null;** ListNode(int val) {...原创 2018-11-23 12:10:55 · 98 阅读 · 0 评论 -
剑指offer第二版第13题:机器人的运动范围(java)
思路:public class Solution { //回溯法,好好理解! public int movingCount(int threshold, int rows, int cols) { if(threshold<0||rows<=0||cols<=0) return 0; boo...原创 2018-11-24 16:36:05 · 304 阅读 · 0 评论