算法与刷题
希尤
某北方不知名985袋鼠一枚
展开
-
Java珠算排序算法
珠算排序算法详情请看zhuSort2相关的代码 /** * @author xiyou * @version 1.2 * @date 2019/12/19 9:34 */public class ThreadSort { /** * 睡眠排序 * * @param array */ public static void s...原创 2019-12-20 11:19:11 · 278 阅读 · 0 评论 -
力扣56. 合并区间,每日刷题
1. 题目:给出一个区间的集合,请合并所有重叠的区间。注意不是有序的输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 ...原创 2019-06-20 14:31:57 · 386 阅读 · 0 评论 -
力扣42题,接雨水的问题,单栈和双栈法解决接雨水问题
* 其实某一格能容纳的水量one就是: * one= max(left)-max(right)- arr[i] * 如果小于等于0 ==0 * 如果大于0才有值 * 问题就到了找到每一个arr[i]左右两边的最大值* 最直观想到的就是用两个栈,分别存截止到当前元素arr[i]的左右两边的最大值* stack<Integer> lef...原创 2019-06-11 10:02:36 · 493 阅读 · 0 评论 -
力扣64最小路径和
1. 暴力递归,力扣提交时间会超出限制/** * 最小路径和问题 * 给你一个二维数组,二维数组中的每个数都是正数,要求从左上角 * 走到右下角,每一步只能向右或者向下,沿途经过的数字要累加起来。 * * 要求:返回最小的路径和 * * 解法一:暴力递归方式 */public class MinPath { public static int minPat...转载 2019-06-17 10:30:19 · 380 阅读 · 0 评论 -
力扣62不同路径总数,动态规划 一招制敌
0. 题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?1. 先来看效果,还可以吧执行用时 :1 ms, 在所有 Java 提交中击败了93.69%的用户内存消耗 :33 MB, 在所有 Java 提交中击败了14.41%...原创 2019-06-21 14:34:11 · 268 阅读 · 0 评论 -
力扣283. 移动零
文章目录1. 题目2. 思路3. 效果惊人1. 题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。 2. 思路其实题目是在不改变非0相对顺序的前提下,把其它元素靠前思路:可以先把所有非...转载 2019-06-25 10:02:19 · 209 阅读 · 0 评论 -
力扣11 ,盛水最多的容器,每日刷题
如题意,垂直的两条线段将会与坐标轴构成一个矩形区域,较短线段的长度将会作为矩形区域的宽度,两线间距将会作为矩形区域的长度,而我们必须最大化该矩形区域的面积。1. 暴力求解时间复杂度:O(n^2)空间复杂度:O(1)class Solution { public int maxArea(int[] height) { int max = 0; ...转载 2019-06-18 14:23:42 · 331 阅读 · 0 评论 -
力扣322零钱兑换引发的动态规划算法
动态规划遵循一套固定的流程:递归的暴力解法 -> 带备忘录的递归解法 -> 非递归的动态规划解法。1. 暴力递归int fib(int N) { if (N == 1 || N == 2) return 1; return fib(N - 1) + fib(N - 2);}PS:但凡遇到需要递归的问题,最好都画出递归树,这对你分析算法的复杂度,寻找算法低效的原...转载 2019-06-27 09:03:24 · 782 阅读 · 1 评论 -
力扣85 最大矩形的简单算法求解
1. 题目给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6 2. 算法分析回顾力扣84题,我们可以算一个数组的最...原创 2019-06-24 10:23:59 · 706 阅读 · 0 评论 -
力扣136. 只出现一次的数字引发的亦或问题的讨论
1. 题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 42.为什么可以用亦或解答public class Time { public static ...原创 2019-07-03 09:00:35 · 219 阅读 · 0 评论 -
由力扣141、力扣142引发的力扣287寻找重复数的问题
1. 力扣141判断是否存在环双指针,相当于跑步,一个跑的快A一个跑的慢B,当有环(环周长Q)的时候,肯定快的能再遇到慢的人,此时A比B多跑1-N圈的时候都能互相遇到,所以下面的算法很简单/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ...转载 2019-06-27 20:24:44 · 299 阅读 · 0 评论 -
Java解决力扣239滑动窗口最大值,击败99.34%的对手
1. 题目给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值----...原创 2019-07-09 17:49:31 · 347 阅读 · 0 评论 -
力扣403. 青蛙过河,每日刷题
1. 题目地址:传送门2. 原本我的理解每一格都要跳,只要判断当前跳的距离是不是在,上次跳的距离K的加一和减一区间里面就可以了[0,1,3,5,6,8,12,17]public static boolean canCross(int[] stones) { if(stones.length<=2){ return false ; } in...转载 2019-07-05 10:07:03 · 417 阅读 · 0 评论 -
力扣739每日温度
1.题目根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]...原创 2019-07-12 10:54:16 · 339 阅读 · 0 评论 -
力扣41. 缺失的第一个正数,一个很奇妙的排序算法
1.题目给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。2. 思路其实就是在满足你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。的条...原创 2019-07-17 20:18:21 · 227 阅读 · 0 评论 -
力扣55. 跳跃游戏,每日刷题
1. 题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3...原创 2019-06-19 09:43:05 · 346 阅读 · 0 评论 -
Java实现走楼梯算法《每日随机一题》
设跳n个台阶有f(n)种方法,爬1个:1种爬2个:2种爬n个:面临两种选择:(1) 第一次爬1个,此时剩余n-1个台阶,有f(n-1)种方法(2) 第一次爬2个,此时剩余n-2个台阶,有f(n-2)种方法所以f(n) = f(n-1) + f(n-2)下面是三种实现方式public class ClimbStairs { /** *...转载 2019-05-24 09:53:15 · 240 阅读 · 0 评论 -
力扣84题《柱状图中最大的矩形》
文章目录1. 暴力循环记忆法求最大矩形面积2.换种思路,简化代码1. 暴力循环记忆法求最大矩形面积时间复杂度O^2 public static int getMax(int[] arr) { //需要记忆的截止到上次出现最大的面积 int shangCiMax = 0; //当前面积 int oneMaxLen = 0;...原创 2019-05-30 16:36:50 · 476 阅读 · 0 评论 -
写出一个字符串中所有数字之和,如果有连续数字如12345,则对应的不是1+2+3而是123 如果数字前面有奇数个-代表负数,偶数个-为正数。
package com.ybl.test.String;public class Str2 { //写出一个字符串中所有数字之和,如果有连续数字如12345,则对应的不是1+2+3+4+5而是12345 //如果数字前面有奇数个-代表负数,偶数个-为正数。 public static int qiuHe(String str){ char [] st...原创 2018-05-17 23:24:09 · 372 阅读 · 0 评论 -
算法学习Day1 台阶问题 牛生牛问题 数字N的M次方问题
/** * Created by H1871 on 2018/7/18. */ public class Day1 {//有N阶台阶,每一次只能走1阶或者两阶public static int jieti(int n){ if( n<1){ return 0; } if (n==1 || n==2){ return n...原创 2018-07-18 20:12:44 · 285 阅读 · 0 评论 -
两种方法求到一个N*M矩阵某个点的最小长度
package com.ybl.test.suanfa.java;import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List;/** * Created by H1871 on 2018/7/19. */ public...原创 2018-07-19 20:16:58 · 553 阅读 · 0 评论 -
求字符串中所有数字字串的和,不包含小数点,但是包含-
package string;import java.lang.reflect.Array;import java.util.Arrays;public class ShuZiTotal { public Integer total(String str){ //总的和 Integer total =0; //用于标记字符串中的数字...原创 2018-09-18 11:47:41 · 368 阅读 · 0 评论 -
Java判断两个字符串是否互为变形词
判断两个字符串是否互为变形词【题目】给定两个字符串 str I 和 str2, 如果 strl 和 str2 中出现的字符种类一样且每种字符出现的次数也 一样,那么 str l 与 str2 互为变形词。请实现函数判断两个字符串是否互为变 形词。【举例】tr I=" l 23", str2="23 I ", 返回 true 。 str I =“l 23”, str2="...原创 2018-09-18 11:52:14 · 575 阅读 · 0 评论 -
判断两个字符串是否是旋转数
package string;public class Xuanzhan { //本题的解法非常 简单, 如果 a 和 b 的 长度不一 样, 字符串 a 和 b 不可能互为旋转词 // 如果 a 和 b 长度一样, 先生成一个大字符 串 b2, b2 是两个字符串 b //拼在一起的结果, 即 Strin g b2 = b + b。然后看 b...原创 2018-09-18 15:29:33 · 196 阅读 · 0 评论 -
字符串的统计字符串
给定一 个字符 串s tr , 返 回 str 的统计字符串 。例如, "aaabbadddffc" 的统计 字符串为"a_3_b_2_a_ l _d_3_f_2_c_l "。package string;public class Tongji { public String tong(String str){ char [] arr = st...原创 2018-09-18 17:07:38 · 130 阅读 · 0 评论 -
四种方式实现2个线程交互打印从1到100的奇偶数《八》
1. 利用volatile状态标志实现(自己写的,哈哈)package duoxiancheng.print;public class PrintBai { /* 1. 任务:两个线程交替的打印从1到100里面的奇数和偶数 2. 但是你如果查看打印结果会发现,其实当第一个线程运行的时候 另一个线程也没有闲着,也会在else里面打...原创 2019-01-24 22:52:48 · 1136 阅读 · 1 评论 -
Java多数投票法求出现次数大于一半的那个及其次数
Java多数投票法package likou;public class Toupiao { public static int getVal(String str) { int count = 0;//用于判断相邻两个数是否相同 char now = str.charAt(0);//用于记录多数的那个数 for (int i = 0; ...转载 2019-02-26 10:17:59 · 335 阅读 · 0 评论 -
买卖股票的最佳时期
题目地址:地址其实就是求后面的某个数减去前面某个数的最大值那我们先来暴力法class Solution { public int maxProfit(int[] prices) { int len =prices.length; if(len&lt;=1){ return 0; } int m...转载 2019-03-13 18:52:09 · 134 阅读 · 0 评论 -
力扣——两个链表的数字和
题目 public static ListNode addTwoNumbersTwo(ListNode l1, ListNode l2) { ListNode t1 = l1; ListNode t2 = l2; ListNode one = new ListNode(0); ListNode target = one;...原创 2019-03-18 23:10:22 · 165 阅读 · 0 评论 -
力扣——删除链表中倒数第N个元素
题目方法一核心思想:先遍历一遍,找到长度,比如说len=10,要删倒数第2个,其实就是正着数 第9个,那我们删除第九个不就好了 public static ListNode removeNthFromEnd(ListNode head, int n) { //dummy最后返回的Node ListNode dummy = new ListNode(0...转载 2019-03-18 23:49:35 · 382 阅读 · 0 评论 -
力扣求链表的中间节点
题目地址 //基础类public class ListNode { public int val; ListNode next; ListNode(int x) { val = x; } @Override public String toString() { String str = Integer.t...原创 2019-04-04 09:30:45 · 235 阅读 · 0 评论 -
力扣每日随缘一题,求两个有序数组合并之后的中位数
题目:大致思路是在合并数组长度小于两个数组和的2/1的情况下,合并两个数组class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int num = nums1.length + nums2.length; if(num ==0){ ...原创 2019-04-10 09:32:14 · 212 阅读 · 0 评论 -
判断两个字符串STR1 、str2是否互为变形词。 条件.两个字符串出现的字符种类相同而且次数一样。
package com.ybl.test.String;public class Str1 { //判断两个字符串STR1 、str2是否互为变形词。// 条件.两个字符串出现的字符种类相同而且次数一样。 public static boolean isBianXingChi(String str1 ,String str2){ if(str1==null...原创 2018-05-17 23:23:27 · 822 阅读 · 0 评论