算法
一个人,一座城,過懿苼
这个作者很懒,什么都没留下…
展开
-
两数之和
题意给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。例:给定nums = [2,7,11,15],target = 9,因为nums [ 0 ] + nums [ 1 ] = 2 + 7 = 9,返回[ 0,1 ]。思路思路很容易想到,利用HashMap求解key存数value存放数组的下标Ha...原创 2020-02-02 16:53:58 · 154 阅读 · 1 评论 -
三数和为零
题意题意非常的简单 就是给定一个数组找出这个数组中存在的三元数相加为0a+b+c=0思路这道题是双重指针的变形先固定好一个数然后开始利用low和end查询数组中的数就可以找到arr[i]+arr[low]+arr[end]=0直到每个数都被做过固定的数arr[i]寻找遍历结束即可找到存在的组合。暴力求解法就不做介绍了时间复杂度o(N^3)双重指针法首先对数组进行排序 publ...原创 2020-02-02 16:40:34 · 171 阅读 · 0 评论 -
树的最大深度
题意求解一棵二叉树的最大深度树这一类型的题目都可以考虑递归实现一颗树的深度就等于求解一棵树的左子和右子树的深度加1. public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x;...原创 2020-02-01 10:19:04 · 256 阅读 · 0 评论 -
请设计一个最小的栈
题意设计一个支持push,pop,top和在恒定时间内检索最小元素的堆栈。push(x) - 将元素x推入堆栈。pop() - 删除堆栈顶部的元素。top() - 获取顶部元素。getMin() - 检索堆栈中的最小元素。思路提供两个栈一个还是存放数另一个存放在栈中的最小值首先考虑push方法当向栈中压入数的时候需要考虑最小栈中的数是否为空是否比栈顶的数大。 /** ...原创 2020-02-01 10:14:55 · 148 阅读 · 0 评论 -
抢劫房子Rob leetcode原题
题意你是一个专业的强盗,计划在街上抢劫房屋。每个房子都有一定数量的钱存在,阻止你抢劫他们的唯一限制是相邻的房屋有连接的安全系统,如果两个相邻的房子在同一个晚上被打破,它将自动联系警察。给出一个代表每个房子的金额的非负整数列表,确定今晚可以抢劫的最大金额而不警告警察。例1:输入: [1,2,3,1]输出: 4说明: Rob house 1(money = 1)然后抢房子3(钱= 3)。...原创 2020-02-01 10:03:50 · 2520 阅读 · 0 评论 -
找出数组中出现最多的数字
找出数组中出现最多的数字题意给定大小为n的数组,找到多数元素。多数元素是出现次数多 的元素⌊ n/2 ⌋。您可以假设该数组非空,并且多数元素始终存在于数组中。例1:输入: [3,2,3]输出: 3例2:输入: [2,2,1,1,1,2,2]输出: 2解法第一种方法排序就可以得出答案中位数就可以 public int majorityElement(int[] nu...原创 2020-02-01 09:45:46 · 2011 阅读 · 2 评论 -
括号匹配问题
括号匹配题意由于只包含字符的字符串’(’,’)’,’{’,’}’,’[‘和’]’,确定输入字符串是有效的。如果输入字符串有效:必须使用相同类型的括号关闭左括号。必须以正确的顺序关闭打开括号。请注意,空字符串也被视为有效。思路括号匹配左括号和右括号匹配使用一个HashMap存储键值对和Stack判断。直接看代码吧。解析 /** * 判断括号是否有效 *...原创 2020-02-01 09:18:27 · 310 阅读 · 0 评论 -
判断一颗树是否是平衡二叉树
题意判断一颗树是否是平衡二叉树首先需要搞清楚什么是平衡二叉树。平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。树形DP法求解定义一个类先创建出结果是否是平衡的和高度为多少? public static class ReturnNode{ public boolean isb; public int h; public Ret...原创 2020-01-29 17:34:17 · 149 阅读 · 0 评论 -
最大子数组的乘积
题意给定一个数组 求出它的乘积最大的子数组第一种方法:暴力求解法思路:很简单求出每个子数组的乘积取出最大。 /** * 给定一个数组 求出它的乘积最大的子数组 * @param nums * @return */ public static int getMutilMax(int[] nums){ if (nums.le...原创 2020-01-29 13:35:06 · 93 阅读 · 0 评论 -
最大子数组和
题意给定一个数组 求出数组的最大子数组和 其中包含正,负 和0;第一种方法:暴力求解法很简单把每个子数组的和求出来话不多说看代码。/** * 方法1暴力求解法 把所有的子数组都求解出来O(n2) */ public static int getMaxSubArr(int[] arr){ if (arr.length==0 || arr==null...原创 2020-01-29 13:26:20 · 135 阅读 · 0 评论 -
N的阶乘
题意题意很简单:给定一个数(N>=0)求出N的阶乘N的阶乘为N!=n(n-1)(n-2)…1;*第一种方法:递归求解思路:很容易想出来想要求出N!的阶乘必须求出N-1的阶层以此类推。 public static long getNMulti(int n){ if (n==1) return 1; return n*getNMulti(n-1); ...原创 2020-01-29 12:01:26 · 838 阅读 · 0 评论