
算法
pianozcl
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树的非递归遍历(非递归先序遍历,中序遍历,后序遍历)
主要利用栈的后进先出的特性public class TraversalNonRecursive { /** * 先压头节点并弹出,然后先压右,后压左。这样弹出的顺序就是先左后右 * @param head */ public static void preOrder(TreeNode head){ System.out.println("preOrder"); if(head!=null){ Stack原创 2020-07-14 00:09:39 · 696 阅读 · 0 评论 -
恢复二叉搜索树
恢复二叉搜索树/** * 二叉树类定义 */class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val;原创 2020-07-05 23:30:04 · 375 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树
105. 从前序与中序遍历序列构造二叉树import java.util.HashMap;public class PreInToTree { public static TreeNode preInToTree(int[] pre,int[] in){ if(pre==null||in==null){ return null; } //map存储中序遍历序列,key节点值,value:节点坐标,用于查询头节点在中原创 2020-06-23 09:38:36 · 187 阅读 · 0 评论 -
二叉树中的最大路径和
二叉树中的最大路径和路径和:二叉树的任意两节点经过中间若干节点(当然也可能中间没有节点,另外单个节点也可看作路径,这里理解就好)形成一条路径,路径的和就是经过节点的值(val)的和public class MaxPathSum { static int maxSum=Integer.MIN_VALUE; public static int maxPathSum(TreeNode root){ maxGain(root); return maxSu原创 2020-06-22 17:04:38 · 316 阅读 · 0 评论 -
寻找两个有序数组的中位数Java实现
/** * 寻找两个有序数组的中位数 */public class FindMedianSortedArrays { public static void main(String[] args) { int[] arr1={1,3,4,5}; int[] arr2={1,2,3,6,9}; System.out.println(fin...原创 2019-12-12 23:42:43 · 416 阅读 · 0 评论 -
无重复字符的最长子串Java实现
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度import java.util.HashSet;import java.util.Set;/** * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度 */public class Solution { public static void main(String[] args) { ...原创 2019-12-12 19:28:22 · 237 阅读 · 0 评论 -
贪心思想分配饼干问题Java代码实现
有两个数组,一个用来存放每个孩子的满足度,一个用来存放每个饼干的大小,只有饼干大小>=孩子满足度,孩子才能满足,求能满足最多孩子数量。import java.util.Arrays;public class FindContentChildren { public static int findContentChildren(int[] greed,int[] size){...原创 2019-05-13 09:48:00 · 570 阅读 · 0 评论 -
动态规划强盗抢劫Java实现
题目:抢劫一排住户,但是不能抢邻近的住户,求最大抢劫量思路:dp(n)代表抢劫到第n个住户的最大抢劫量,如果抢劫了第n-1个住户,就不能抢劫第n个住户,用arr数组代表一排用户所以dp(n)=max(dp(n-2)+arr[n],dp(n-1))//动态规划,强盗抢劫public class Rob { public static int rob(int[] arr){ ...原创 2019-05-16 09:47:46 · 794 阅读 · 0 评论 -
动态规划爬楼梯问题Java代码实现
题目描述:有 n阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法思路:第n阶楼梯,可以由n-1和n-2一步到达。用dp(n)代表方法数,dp(n)=dp(n-1)+dp(n-2)//动态规划,爬楼梯问题public class ClimbStairs { public static int climbStairs(int n){ if(n<=2){...原创 2019-05-15 18:02:47 · 900 阅读 · 0 评论 -
字符串删去一个字符,是否能构成回文字符串Java代码实现
public class ValidPalindrome { //判断是否为回文字符串 public static boolean isPalindrome(String s,int i,int j){ while(i<j){ if(s.charAt(i++)!=s.charAt(j--)){ retu...原创 2019-05-09 16:52:15 · 753 阅读 · 0 评论 -
反转字符串中的元音字母Java实现
import java.util.Arrays;import java.util.HashSet;public class ReverseVowels { //定义一个集合用来存放元音字母 private final static HashSet<Character> vowels=new HashSet<>(Arrays.asList('a','e...原创 2019-05-09 15:31:12 · 746 阅读 · 0 评论 -
判断一个数是否为两个数的平方和Java实现
//最小数和最大数向中间遍历,最大数为number开平方取整//如果两数平方之和等于number,返回true//如果两数平方之和小于number,最小数加一//如果两数平方之和大于number,最大数减一//循环结束找不到返回falsepublic class JudgeSquareSum { public static boolean judgeSquareSum(int ...原创 2019-05-08 11:39:08 · 1994 阅读 · 0 评论 -
Java实现有序数组TwoSum
题目:升序数组找出两个数的和为target,返回它们的下标//定义左右两个指针,向中间遍历,如果两数之和等于target返回下标//小于target,左指针i++,使两数之和增加//大于target,右指针j--,使两数之和减小//如果循环结束找不到,返回nullpublic class TwoSum { public static int[] twoSum(int[] ar...原创 2019-05-08 11:01:57 · 318 阅读 · 0 评论