随笔分类 -  算法

记录算法
摘要:写在前面的话:之前没好好学动态规划,现在开始再重新学一遍吧! 1 买卖股票的最佳时机II // 简易的做法 public int maxProfit(int[] prices) { // 这个题目隐含了可以,同一个股票卖了又买,所以 // 1,2,3,4,5。5 - 1 = (2 - 1) + (3 阅读全文
posted @ 2020-11-26 09:39 Bears9 阅读(103) 评论(2) 推荐(0)
摘要:题目链接 检讨代码TAT,模拟思路 Stack<Integer> s1 = new Stack<>(); Stack<Integer> s2 = new Stack<>(); public CQueue() { s1 = new Stack<>(); s2 = new Stack<>(); } // 阅读全文
posted @ 2020-11-22 09:25 Bears9 阅读(84) 评论(0) 推荐(0)
摘要:题目链接 代码 第一种写法,多使用了一个辅助指针 public ListNode deleteNode(ListNode head, int val) { if (head == null) return null; // 首先分析在首部的情况 if (head.val == val) { retu 阅读全文
posted @ 2020-11-20 09:35 Bears9 阅读(65) 评论(0) 推荐(0)
摘要:题目链接 class Solution { // 说一下我自己的理解 // 数组中的数字都是排好序的,如果左指针和右指针相加大于target, // 那么左指针+1,也肯定不满足,这个时候右指针-1,当s比target小的时候, // 左指针+1, public int[] twoSum(int[] 阅读全文
posted @ 2020-10-26 17:19 Bears9 阅读(64) 评论(0) 推荐(0)
摘要:题目链接 代码 /** * 摩尔投票 * 用投票抵消的思路来解题,如果当前的数字和下一个数字相等,那么可以抵消的票数 * +1,如果不相等,那么-1 * */ public int majorityElement(int[] nums) { int ans = 0, votes = 0; for ( 阅读全文
posted @ 2020-10-23 08:31 Bears9 阅读(92) 评论(0) 推荐(0)
摘要:题目链接 代码 class Solution { public List<Integer> majorityElement(int[] nums) { // 创建返回值 List<Integer> res = new ArrayList<>(); if (nums == null || nums.l 阅读全文
posted @ 2020-10-23 08:15 Bears9 阅读(83) 评论(0) 推荐(0)
摘要:题目链接 代码 public int[] maxSlidingWindow(int[] nums, int k) { // 考虑数组中只有一个数 if (nums.length == 0 || k == 0) return new int[0]; // 采用双端队列 Deque<Integer> d 阅读全文
posted @ 2020-10-20 11:22 Bears9 阅读(105) 评论(0) 推荐(0)
摘要:题目链接 代码 class Solution { public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List<List<Integer>> ans = new Array 阅读全文
posted @ 2020-10-18 17:30 Bears9 阅读(76) 评论(0) 推荐(0)
摘要:题目链接 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 直接暴力,或者在这个基础之上,横向加一个二分,可以加速不少。 publ 阅读全文
posted @ 2020-10-09 09:29 Bears9 阅读(162) 评论(0) 推荐(0)
摘要:题目链接 **思路:**思路挺简单的,用一个临时节点B记录当前节点,另外一个节点A.next 指向 B,同时更更新节点A,A = A.next。这样就形成了反向? 代码 class Solution { public ListNode reverseList(ListNode head) { if 阅读全文
posted @ 2020-10-06 09:23 Bears9 阅读(70) 评论(0) 推荐(0)
摘要:题目链接 代码参考自 public static boolean flag = false; // 用来判断当前走过来距离是否有这样一个数 public int judge(int []stones, int value) { int left = 0, right = stones.length 阅读全文
posted @ 2020-10-03 10:01 Bears9 阅读(196) 评论(0) 推荐(0)
摘要:题目来自 代码及思路 public boolean isSubStructure(TreeNode A, TreeNode B) { if (A == null || B == null) return false; //先从根节点判断B是不是A的子结构,如果不是在分别从左右两个子树判断, //只要 阅读全文
posted @ 2020-10-02 17:20 Bears9 阅读(72) 评论(0) 推荐(0)
摘要:题目来自 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i, j, k) 满足: 1 <= i, j, k <= N Ai < Bj < Ck 【输入格式】 第一行包含一个 阅读全文
posted @ 2020-09-30 17:42 Bears9 阅读(112) 评论(0) 推荐(0)
摘要:题目链接 **题目思路:**呃,这是一种数学规律,让数字拆分成尽可能多的3相乘,如果剩下的数字<=4需要另做考虑,这点很容易得出,这样拆分的数字相乘的结果就是最大的。 代码 public int cuttingRope(int n) { int []dp = {0, 1, 1, 2, 4}; if 阅读全文
posted @ 2020-09-26 14:48 Bears9 阅读(84) 评论(0) 推荐(0)
摘要:题目链接 题解来自 本题主要是找规律。暴力算法会超时。 我们先来看一个简单的规律: 设f(n)是只从0到n位数的最大值一共有多少个1, f(1) = 计算09有多少个1 = 1; f(2) = 计算099有多少个1; 我们先把1开头的十位数单独拿出来考虑且只考虑十位数上1的个数:1019共有10个1 阅读全文
posted @ 2020-09-26 14:26 Bears9 阅读(126) 评论(0) 推荐(0)
摘要:第一种算法:卡特兰数,C( 2n , n ) / ( n + 1), (2n)!/[n!(n + 1)!] !表示阶乘(注意这里是两种写法) 第二种算法:动态规划 f(n) = f(n-1)f(0) + f(n-2)f(1) + f(n-3)f(2) + ... + f(1)f(n-2) + f(n 阅读全文
posted @ 2020-09-24 09:04 Bears9 阅读(563) 评论(0) 推荐(0)
摘要:题目链接 **Rabin-Karp算法思路:**推荐Rabin-Karp算法的讲解,通俗版,力扣官方 自己的理解:Rabin-Karp形如下面的例子,这个算法能够快速的比较是否存在某个字符串,并且方便删除头一个元素,然后在尾部加入一个元素。 为什么?看下面的例子。 1123456789 字符集[1, 阅读全文
posted @ 2020-09-24 08:55 Bears9 阅读(163) 评论(0) 推荐(0)
摘要:题目链接 代码 class LRUCache { // 使用LinkedHashMap HashMap<Integer, Integer> map; // 因为LinkedHashMap是继承自HashMap的,初始化容量使用的是HashMap的,所以 24 = 32(当申请24容量的时候,实际给的 阅读全文
posted @ 2020-09-22 08:57 Bears9 阅读(139) 评论(0) 推荐(0)
摘要:剑指 Offer 48. 最长不含重复字符的子字符串 题目来自 滑动窗口代码 public int lengthOfLongestSubstring(String s) { if (s == null || s.length() < 1) { return 0; } int maxNumber = 阅读全文
posted @ 2020-09-21 09:18 Bears9 阅读(109) 评论(0) 推荐(0)
摘要:题目链接 并查集判环 思路: 并查集判环,挺简单的,如果刚开始就指向了一个根,后面又指向了他,说明就成环了(这里不考虑数据重复,比如2->3,2->3)。这个题还有一个点要注意,单次数据可能不止一张图! package 记录.HDU; import java.util.HashSet; import 阅读全文
posted @ 2020-09-19 09:29 Bears9 阅读(148) 评论(0) 推荐(0)