力扣(leetcode)
Object_in_java
这个作者很懒,什么都没留下…
展开
-
力扣leetcode 118杨辉三角 代码及题解
动态规划 杨辉三角 java原创 2022-01-20 21:39:12 · 530 阅读 · 2 评论 -
Leetcode175. 组合两个表 Mysql链接问题
表1: Person±------------±--------+| 列名 | 类型 |±------------±--------+| PersonId | int || FirstName | varchar || LastName | varchar |±------------±--------+PersonId 是上表主键表2: Address±------------±--------+| 列名 | 类型原创 2021-01-11 17:57:20 · 96 阅读 · 0 评论 -
Leetcode607 销售员
# Write your MySQL query statement belowselect salesperson.name from salesperson where name not in (select salesperson.name from salesperson left join orders on salesperson.sales_id = orders.sales_id left join company on orders.com_id = company.com_i原创 2020-12-27 15:46:29 · 140 阅读 · 0 评论 -
Leetcode 176 第二高的薪水
# Write your MySQL query statement belowselect ifnull ((select distinct Salary from Employee order by Salary desc limit 1,1),null) As SecondHighestSalary记得用distinct去重,否则两个相同的工资也能得出“第二高的工资”limit n,m是跳过m条后选择前n条ifnull(a,b)则是如果a为null则输出备用的b的值...原创 2020-12-27 15:23:11 · 73 阅读 · 0 评论 -
LeetCode184部门最高的员工(含心得和注意事项)
SELECT Department.Name AS Department,Employee.Name AS Employee,Employee.Salary AS Salary FROM Employee INNER JOIN Department ON Employee.DepartmentId=Department.Id WHERE (Salary,DepartmentId) IN (SELECT MAX(Salary),DepartmentId FROM Employee GROUP BY D原创 2020-12-16 18:52:01 · 105 阅读 · 0 评论 -
二叉树的定义 以及前中后序,层序遍历
class Solution { List <Integer> list = new ArrayList<>(); public List<Integer> preorderTraversal(TreeNode root) { if(root==null) return new ArrayList<>(); list.add(root.val); preorderTra..原创 2020-12-08 11:25:19 · 111 阅读 · 2 评论 -
力扣42. 接雨水 (暴力法)
思路就是我的世界放水块,遍历数组所有元素,在该位置放水块,水能落进去并且存住就加到sum中(此过程不考虑别的位置)。class Solution { public int trap(int[] height) { int sumWater = 0; for(int i = 1;i < height.length -1;i++){ int leftMaxHeight = 0; int rightMaxHeight原创 2020-12-07 12:21:51 · 167 阅读 · 1 评论 -
力扣 746. 使用最小花费爬楼梯(dp)
class Solution { public int minCostClimbingStairs(int[] cost) { if(cost == null || cost.length == 0) return 0; if(cost.length == 1) return cost[0]; if(cost.length == 2) return Math.min(cost[0.原创 2020-12-07 11:30:22 · 101 阅读 · 1 评论 -
力扣198 打家劫舍(dp)
这道题思路就是dp状态(数组中的元素表示的东西)很好想,就是走到第i家店的最多钱数dp方程就是:dp[i]=max(dp[i-1],dp[i-2]+nums[i]);其实对应的就是到这家时是不打劫or打劫还有一个点要注意的就是不要陷入思维误区,反向来想这道题,你可能会想如果打劫的话dp[i-1]也可能在[i-1]这时侯没打劫而是在[i-2]时打劫了,那在这种情况下我不就可以dp[i-1]+nums[i]了吗,这时候你就要知道!你是不能这么想的!你需要正向的想问题!。两种情况下:1.第i家,不打劫原创 2020-11-30 17:50:45 · 196 阅读 · 3 评论 -
力扣1800三步问题(dp迭代写法(省内存))
class Solution { public int waysToStep(int n) { if(n <= 2) return n; if(n == 3) return 4; int n1 = 1; int n2 = 2; int n3 = 4; int step = n % 3;int t = 0; n /= 3;原创 2020-11-18 18:44:24 · 127 阅读 · 0 评论 -
力扣53 最大子序列和 dp
这个是我用dp的思路class Solution { public int maxSubArray(int[] nums) { int[] maxSubNums = new int[nums.length]; int max = maxSubNums[0] = nums[0]; for(int i = 1;i < nums.length;i++){ maxSubNums[i] = Math.max(nums[i],max原创 2020-11-17 18:25:53 · 170 阅读 · 0 评论 -
力扣121. 买卖股票的最佳时机(dp)
前i天的最大收益 = max(前i-1天的最大收益,第i天的价格-前i-1天中的最小价格)class Solution { public int maxProfit(int[] prices) { if(prices==null||prices.length==0||prices.length==1) return 0; int min = prices[0];int b = 0; for(int i = 1;i < prices.len原创 2020-11-14 15:36:45 · 176 阅读 · 0 评论 -
力扣300. 最长上升子序列
class Solution { public int lengthOfLIS(int[] nums) { if (nums.length == 0) { return 0; } int[] dp = new int[nums.length]; dp[0] = 1; int maxans = 1; for (int i = 1; i < nums.length; i++) {原创 2020-11-10 21:51:09 · 93 阅读 · 0 评论 -
力扣1854主要元素(摩尔投票法)
方法想明白就很简单,先读懂题目选出出现次数超过一半的元素,我们这样做,先选取首元素,然后从第二个元素开始遍历数组,若得到的元素与选中元素相同则计数器加一,不同则减一直至为零时,选取当前得到的元素为选中元素,继续往下遍历。如果有超过半数的元素计数器最后会大于等于1,极限 情况就是等于1,数量只超过半数一个,且完全与其他元素’抵消‘掉,其他元素与其他元素之间没发生‘抵消’。class Solution { public int majorityElement(int[] nums) {原创 2020-11-09 20:09:26 · 228 阅读 · 2 评论 -
力扣122. 买卖股票的最佳时机 II(贪心算法简化版)
仔细思考一下,也可以这么写,多段的利润和等于每小段的利润加起来,所以每每比较相邻的两天,有利润则累加即可。class Solution { public int maxProfit(int[] prices) { int ans = 0; int n = prices.length; for (int i = 1; i < n; ++i) { ans += Math.max(0, prices[i] - prices[i原创 2020-11-09 16:55:26 · 116 阅读 · 3 评论 -
力扣122. 买卖股票的最佳时机 II(贪心算法)
class Solution { public int maxProfit(int[] prices) { if(prices==null||prices.length==0||prices.length==1) return 0; //涨价前买 //降价前卖 int t = prices[0]; boolean possess = false; int possessIndex原创 2020-11-09 11:17:26 · 73 阅读 · 0 评论 -
力扣57插入区间
题目描述感觉和题解有出入,题解写的是插入区间的边界和原间隔数组间隔的一边重合就能合并,但间隔数组中每个间隔与另一个间隔重合了却不能合并他俩,个人认为应该可以让他们合并的(也可能是我题目没读清楚吧)。我自己写的代码是这样interval[0] >= right,interval[1] <= left的。class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { int le原创 2020-11-04 21:43:22 · 115 阅读 · 3 评论 -
力扣941有效的山脉数组
class Solution { public boolean validMountainArray(int[] A) { boolean up = false;//是否在下降前上升了 boolean down = false;//是否在上升后下降了 int index = 1; if(A == null || A.length < 3) return false; int t = A[0原创 2020-11-03 21:41:13 · 86 阅读 · 1 评论 -
力扣349两个数组的交集
class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSet<>(); Set<Integer> set2 = new HashSet<>();//数组->Hashset(去重)->数组->返回转换后得到的数组) for(int num: nu原创 2020-11-03 21:36:28 · 75 阅读 · 0 评论 -
力扣LCP17 速算机器人
class Solution { public int calculate(String s) { int x = 1,y = 0; char[] str = s.toCharArray(); for(char c: str){ if(c=='A') x = 2 * x + y; else if(c=='B') y = 2 * y + x;原创 2020-10-27 09:55:26 · 157 阅读 · 0 评论 -
力扣1365有多少小于当前数字的数(迭代双桶)
class Solution { public int maximumProduct(int[] nums) { Arrays.sort(nums); int len = nums.length; return Math.max(Math.max((nums[0]*nums[1]*nums[len-1]),nums[len-3]*nums[len-2]*nums[len-1]),nums[0]*nums[1]*nums[2]); }}原创 2020-10-26 10:14:23 · 73 阅读 · 0 评论 -
力扣104(二叉树的最大深度)
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int maxDepth(TreeNode root) { if(root==null)原创 2020-10-12 10:17:47 · 142 阅读 · 0 评论 -
力扣867(转置矩阵)
class Solution { public int[][] transpose(int[][] A) { int [][]a= new int [A[0].length][A.length]; for(int i=0;i<A.length;i++) for(int j=0;j<A[0].length;j++) a[j][i]=A[i][j]; return a; }}原创 2020-10-12 09:58:24 · 141 阅读 · 0 评论 -
力扣20(括号匹配)(两种方法的最简单版本)
class Solution { public boolean isValid(String s) { Deque<Character> st = new ArrayDeque<>(); char[] chrs = s.toCharArray(); int len = chrs.length,t = 0; while (t < len)//count==len时,下面的索引值==数组最大下标原创 2020-10-05 16:51:37 · 295 阅读 · 2 评论 -
力扣27
class Solution { public int removeElement(int[] nums, int val) { int j=0; for(int i=0;i<nums.length;i++) if(nums[i]!=val) nums[j++]=nums[i]; return j; }}原创 2020-10-04 23:56:33 · 135 阅读 · 0 评论 -
leetcode283两种优化的方法
class Solution { public void moveZeroes(int[] nums) { if(nums==null) return; else{ int t = 0; for(int i=0;i<nums.length;i++){ if(nums[i]==0) t++; else if(t!=0){原创 2020-09-30 21:11:17 · 85 阅读 · 0 评论 -
力扣144(比官方的简洁一些)
class Solution { List<Integer> a=new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { if(root==null) return a; inorderTraversal(root.left); a.add(root.val);原创 2020-09-14 20:16:46 · 112 阅读 · 0 评论 -
力扣2. Add Two Numbers
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){ struct ListNode *pr=(struct ListNode*)malloc(sizeof(struc原创 2020-06-22 20:20:14 · 137 阅读 · 0 评论 -
力扣(leetcode)1431. Kids With the Greatest Number of Candies
思路就是先跑一遍找到拥有最多的糖果有多少,再跑一遍看每个人加上额外糖果后能否超过最多的那个人的糖果.C语言/** * Note: The returned array must be malloced, assume caller calls free(). */bool* kidsWithCandies(int* candies, int candiesSize, int extraCandies, int* returnSize){ bool *r=(bool*)malloc(size原创 2020-06-11 16:17:08 · 229 阅读 · 0 评论