![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
wxm_ng
这个作者很懒,什么都没留下…
展开
-
单调栈结构问题-求最大子矩阵
题目描述Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area.For example, given the following matrix:1 0 1 0 01 0 1 1 11 1 1 1 11 0 ...原创 2019-06-18 22:57:42 · 270 阅读 · 0 评论 -
子数组异或和为0最多的划分
//思路:1.arr上做分割,则dp记录从左到右每增加一个数划分得到的最大划分值//对于第i个数的怎么求出呢: //1.当i-1最后子数异或和不为0时,dp[i] = dp[i-1] //2.当i-1为最后异或和时,dp[i] = dp[k-1]+1, K为上次距离i-1最近的一组异或和的 //最后一个数,则上一个异或和个数为dp[k-1],最近一次为arr[k....i...原创 2019-07-21 23:40:18 · 869 阅读 · 0 评论 -
最长公共字符串问题
//1.返回str1和str2的最长公共子序列 public int[][] getdp(char[] ch1, char[] ch2){ int[][] dp = new int[ch1.length][ch2.length]; dp[0][0] = ch1[0] == ch2[0] ? 1 : 0; for(int i = 1; i &l...原创 2019-07-21 23:04:33 · 124 阅读 · 0 评论 -
数组中最长连续序列
//先排序,再根据是否连续来解,时间复杂度为o(nlogn) //用Map可以使时间复杂度为o(n) public int longestConsecutive(int[] arr){ if(arr == null || arr.length == 0) return 0; int max = 1; HashMap<Integ...原创 2019-07-24 23:20:59 · 169 阅读 · 0 评论 -
数组最长递增子序列
public class MaxList { //给定arr,返回arr,的最长递增子序列 //下面该方法对arr中左右子序列从左到右找出每个位置处的最大最序列个数 public int[] getdp(int[] arr){ int[] dp = new int[arr.length]; for(int i = 0; i < arr...原创 2019-07-17 23:13:43 · 330 阅读 · 0 评论 -
二次树的前中后序遍历
public class RecurTheTreeNode { //非递归遍历 public void preOrderRecur(TreeNode head){ if(head == null) return; System.out.println(head.val); preOrderRecur(head.left); ...原创 2019-06-29 22:12:56 · 286 阅读 · 0 评论 -
反转链表
反转单链表和双链表 代码如下:public Node revareseList(Node head){ Node pre = null; Node next = null; while(head != null){ next = head.next; head.next = pre; ...原创 2019-06-23 11:58:05 · 118 阅读 · 0 评论 -
mirrors的前序后序中序遍历
//morris遍历 //实现时间复杂度为o(n)空间复杂度为O(1) //首先来对整个树走一遍 通过null节点来返回向上的节点, public void morris(TreeNode head){ if(head == null) return; TreeNode cur = head; TreeNode mostRig...原创 2019-07-01 21:22:31 · 1054 阅读 · 0 评论 -
两个相交或者不相交链表公共节点问题
/** * 1.首先判断链表是否有环,如果有环找出第一个入环节点, * 2.一个有环一个无环不可能相交,两个无环可能相交,两个有环有两种相交方式 * 1)在入环节点前相交 2)在入环节点后相交 * 3.返回第一个相交节点,无环相交为第一个公共相等的节点,有环相交为两个环之间的任一节点 */ //拿到入环节点,如果无环则为null...原创 2019-06-25 21:53:39 · 223 阅读 · 0 评论 -
用递归实现栈的逆序
/** * 用递归逆序一个栈 */ //返回栈底元素,并且重新压入剩余元素 public int getAndRemoveLastElement(Stack<Integer> stack){ int result = stack.pop(); if(stack.isEmpty()){ retu...翻译 2019-06-17 22:25:22 · 193 阅读 · 0 评论 -
用两个栈实现一个队列
用两个栈实现一个队列private static Stack<Integer> stackPush; private static Stack<Integer> stackPop; public TwoStackToQueue(){ stackPush = new Stack<>();; stackPop = ...翻译 2019-06-17 22:24:23 · 85 阅读 · 0 评论 -
最大窗口问题-最大值减去最小值等于num子数组数量
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2,3,4,2,6,2,5,1} 及滑动窗口的大小w,如果w为3那么一共存在6个滑动窗口:{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,...原创 2019-06-19 20:02:14 · 282 阅读 · 0 评论 -
股票问题
解题思路:很多读者抱怨股票系列问题奇技淫巧太多,如果面试真的遇到这类问题,基本不会想到那些巧妙的办法,怎么办?所以本文拒绝奇技淫巧,而是稳扎稳打,只用一种通用方法解决所用问题,以不变应万变。这篇文章用状态机的技巧来解决,可以全部提交通过。不要觉得这个名词高大上,文学词汇而已,实际上就是 DP table,看一眼就明白了。先随便抽出一道题,看看别人的解法:C++int maxProfit(...转载 2019-08-23 17:51:38 · 277 阅读 · 0 评论