自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 每日一题算法:2020年5月31日对称二叉树isSymmetric(递归算法)

2020年5月31日对称二叉树isSymmetric默认格式:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public boolean isSymmetric

2020-05-31 10:09:43 118

原创 每日一题算法:2020年5月30日柱状图中最大的矩形largestRectangleArea

2020年5月30日柱状图中最大的矩形largestRectangleArea默认格式:class Solution { public int largestRectangleArea(int[] heights) { }}解题思路:这道题看起来非常难,至少他的解题思路不是非常容易就能找到的,要做出这道题要先有一个比较好的想法才可以。方法1:暴力算法暴力算法一直是我最喜欢的一种算法,因为能写出暴力算法至少证明了你对题目有了最基本的了解,那么使用暴力算法怎么解决呢?第一步,获取

2020-05-30 23:50:13 32

原创 每日一题算法:2020年5月29日 打家劫舍rob

2020年5月29日 打家劫舍rob默认格式;class Solution { public int rob(int[] nums) { }}解题思路:这道题难度是简单,考虑起来其实也是挺简单的感觉,没有非常复杂。有一点需要注意的是,偷得次数多不代表偷的数目大,比如有下面这个数组[1 , 55, 8 , 7 , 9 , 10 , 15]并不是1+8+9+15这四个数最大,而是55+9+15是最大的,我们应该找到这个规则所要展现的规则思考的一个关键点在于,你之前做出的最

2020-05-29 11:31:34 45

原创 每日一题算法:2020年5月28日字符串解码decodeString

2020年5月28日字符串解码decodeString默认格式;class Solution { public String decodeString(String s) { }}解题思路:字符串通过ascii编码判断当前的字符类型,然后分情况处理,如果是数字那就开始等待出现 ‘[’ 符号的出现,出现后读取字符串,直到出现’]'符号位置,上面的三个环节作为一整个周期,循环直到字符串的末尾。感觉起来还是很简单的,因为之前做过图像的解码工作,所以应该比较容易实现,只是不知道会不会

2020-05-28 23:02:22 42

原创 每日一题算法:2020年5月27日 和可被 K 整除的子数组subarraysDivByK

2020年5月27日 和可被 K 整除的子数组subarraysDivByK默认格式:class Solution { public int subarraysDivByK(int[] A, int K) { }}解题思路:子串,又是子串,根据我多年的经验,肯定是用双指针算法。但是仔细思考之后发现并不是这样的,他的子串存在重复的部分,所以使用双指针是会导致错过一些符合条件的子数组的。这道题和我以前做的求和为K的子数组非常像,应该是差不多的方法,使用前N项和算

2020-05-27 11:41:46 44

原创 每日一题算法:2020年5月26日 findDuplicate寻找重复数

2020年5月26日 findDuplicate寻找重复数class Solution { public int findDuplicate(int[] nums) {}}解题思路:要啥解题思路,这一看直接遍历,反正时间复杂度也就O((n^2)/2),不就直接符合条件了吗 public int findDuplicate(int[] nums) { for (int i=0;i<nums.length-1;i++){ for(int

2020-05-26 23:18:36 47

原创 每日一题算法:2020年5月25日 LFU缓存LRUCache

2020年5月25日 LFU缓存LRUCache默认格式:class LRUCache { public LRUCache(int capacity) { } public int get(int key) { } public void put(int key, int value) { }}/** * Your LRUCache object will be instantiated and called as s

2020-05-25 23:37:56 47

原创 每日一题算法:2020年5月24日 寻找两个正序数组的中位数findMedianSortedArrays

2020年5月24日 寻找两个正序数组的中位数findMedianSortedArrays默认格式:class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { }}解题思路:1,最关键的一点在于他给定的时间复杂度为O(log(m+n)),也就是肯定是用了类似于折半查找的方法,我们可以顺着这个思路去思考。2,首先分析题目,非常关键的一点是有序,有序意味着数组有一个非常有用的

2020-05-24 14:54:08 48

原创 每日一题算法:2020.05.23最小覆盖子串minWindow

2020.05.23最小覆盖子串minWindow默认格式:class Solution { public String minWindow(String s, String t) { }}解题思路:看到题目思考不到一分钟,脑子里只有两个字,滑块,但是我还不会使用滑块算法,先去看看视频学习一下。每天就只是解决问题是进步非常缓慢的,所以我决定改变解决方式,掌握解决问题的方法,如果遇到不懂的解决方法就先去学习,学完之后再回来写算法,今天学习的是滑动窗口问题。下面是一些网上的抄录

2020-05-23 20:42:38 75

原创 每日一题算法:2020.05.22从前序与中序遍历序列构造二叉树buildTree

2020.05.22从前序与中序遍历序列构造二叉树buildTree默认结构:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode b

2020-05-22 22:59:28 61

原创 每日一题算法:2020.05.21最长回文子串longestPalindrome

2020.05.21最长回文子串longestPalindrome默认格式:class Solution { public String longestPalindrome(String s) { }}解题思路:之前做过验证回文字符串,最常的子串的各种问题,现在遇到这题简直就是对我这几天学习情况的一个考验,我今天势必要拿下这题。首先,这种题目必定是时间复杂度O(n)能够解决的问题,然后我们要来找字符串的一些没有写出来的特点,总结这些特点就能帮助我们找到解题的办法。1:首位

2020-05-21 20:47:00 80

原创 每日一题算法:2020.5.20每个元音包含偶数次的最长子字符串

2020.5.20每个元音包含偶数次的最长子字符串默认格式:class Solution { public int findTheLongestSubstring(String s) { }}解题思路:这道题的题目略长,理解起来也比较费劲,大致的意思就是要在给的字符串中找出一个字符串,这个字符串中的a,e,i,o,u五个字母都出现了偶数次。这道题其实和之前写的乘积最大的子数组,和为k的子数组都有一些类似的东西,就是在数组中找一个子数组,如果是数字的话应该是找

2020-05-20 23:29:09 40

原创 每日一题算法:2020.05.19验证回文字符串validPalindrome

2020.05.19验证回文字符串默认格式:class Solution { public boolean validPalindrome(String s) { }}思路:用栈,先压入一半的字符进栈,然后依次出栈,判断每次出栈是否相等,如果相等则进行下一个的判断,如果不相等则把当前值和下一个值进行对比,找出错误的那个…等一下,如果是这种情况[a,b,c,a],压入一半是ab,和ca进行对比的时候无法判断a和c那个是正确的。放弃该思路。思路2贪心算法,我不知道是不是可以这

2020-05-19 21:51:51 42

原创 每日一题算法:2020.05.18乘积最大子数组maxProduct

2020.05.18乘积最大子数组class Solution { public int maxProduct(int[] nums) { }}思路:第一种做法肯定是包暴力解决,和上次一样,时间复杂度是n^2,但是这次肯定不能和上次一样,应该有一些进步才行。首先要想好数据结构有一个算法推算的过程我们要计算的值是子数组的积,那么这个子数组能够记为p(n-m),我们要计算p(n-m)的最大值,我们先看一下p(n-m)有什么关系存在p(n-m)=pm/pnp()做不出,还

2020-05-18 23:20:53 50

原创 每日一题算法:2020.05.17 课程表II,,,,findOrder

2020.05.17 课程表IIfindOrder题目:函数格式:class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { }}思路:看完题干之后的感觉,好复杂,在稍微思考和看了提示和说明之后,想到了一个暴力的办法,不过需要先定义一个数据结构,为了不出意外,先对数据进行分析。大致分为这么四种情况需要考虑1,一个课有多个先修课程,就像是C2,多个课程有同一个先修课程,

2020-05-17 23:13:29 94

原创 每日一题算法:K个一组翻转链表reverseKGroup2020.5.16

2020.5.13 K个一组翻转链表reverseKGroup提供的格式/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode reverseKGroup(ListNode head,

2020-05-16 21:57:25 79

原创 每日一题算法:和为K的子数组subarraySum2020.05.15

2020.05.15和为K的子数组subarraySum题目描述:函数格式;class Solution { public int subarraySum(int[] nums, int k) { }}思路:最简单的一种方法,遍历,时间复杂度为nlogn,从数组的第一个开始,依次计算他和后面n位的和,直到数组结束。class Solution { public int subarraySum(int[] nums, int k) { int

2020-05-15 23:06:00 33

原创 每日一题算法:寻找只出现一次的数字singleNumber 2020.05.14

每日一题算法:寻找只出现一次的数字singleNumber 2020.05.14题目:原始格式:class Solution { public int singleNumber(int[] nums) { }}新概念,线性时间复杂度,就是时间复杂度为抄线性阶O(n)。就是数组越长,算法时间越久,但是不是几何增长。解题思路:首先最简单的就是遍历数组,在遇到一个值的时候,直接遍历数组找有几个,如果是两个,就不返回,是一个就返回,这时最简单的,但是时间复杂度是O(n^2),因

2020-05-14 22:04:47 88

原创 每日一题算法:层序遍历二叉树2020.05.13

2020.5.13 层序遍历二叉树题目中提供了一种数据结构题目提供了默认的数据结构一个树节点有他的左节点,右节点,和本身的值三个参数,还提供了一个构造函数。构造函数我们应该用不到,因为树是系统提供的,不需要我们构造。分析题意:它会提供一个TreeNode的对象,这个对象是树的最顶层父节点(根节点),通过这个根节点的数据结构,我们要获取他每一层的子节点中的数据。思路:应该需要使用递归思路图实践一遍成功代码及解题思路如下。实际上没有用到递归,主要思路是,维护一个父节点链表,一直循环,

2020-05-13 21:11:31 37

原创 每日一题算法:MinStack 2020.05.12

每日一题算法MinStack:2020.05.12class MinStack { private static Stack<Integer> stack; /** initialize your data structure here. */ public MinStack() { stack=new Stack<Integer>(); } public void push(int x) { stack.

2020-05-12 21:28:10 43

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