自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(313)
  • 收藏
  • 关注

原创 JAVA并行程序基础 学习笔记

学习资料:《深入理解计算机系统》,《Java高并发程序设计》,《Java并发编程实战》,《Java并发编程的艺术》,《Java核心技术卷1》多线程一章,极客时间王宝令的Java并发编程实战课程…以下大部分阐述来自上述书籍与课程中个人认为很重要的部分,也有部分心得体会。一.概念辨析1.进程 & 线程进程:操作系统对一个正在运行的而程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。这种机制叫做上下文

2021-03-13 11:11:31 6056 13

原创 Leetcode_934_最短的桥_广度优先搜索

难度不高,但是代码量还是比较多的,锻炼基本功挺不错的。

2022-10-25 17:09:39 247 1

原创 Leetcode_623_在二叉树的中增加一行_数据结构

该说不说的,我觉得写的一气呵成挺完美。

2022-08-05 17:31:25 203

原创 Leetcode_622_设计循环队列_数据结构

代码】Leetcode_622_设计循环队列_数据结构。

2022-08-02 14:22:15 247

原创 浅谈RPC

由于业务越来越复杂,需要将业务拆成多个系统,在这种情况下如果使用http请求去调用其他系统的服务会显得特别麻烦,所以为了像本地方法调用一样,去发起远程调用,让使用者感知不到远程调用的过程,RPC应运而生。所以本质上来说,RPC只是在http外包了一层,使用了代理模式,在代理模式内部通过httpClient去实现远程过程调用。其实这么讲也不是特别准确,因为RPC是一种技术,而http是协议,也有用http实现的RPC。我认为在一个大型系统内部适合使用RPC,而对外提供服务的时候,应该使用HTTP接口。...

2022-07-26 20:45:38 258

原创 Leetcode_919_完全二叉树插入器_广搜

代码】Leetcode_919_完全二叉树插入器_广搜。

2022-07-25 10:01:06 1505

原创 Leetcode_558_四叉树交集_递归

代码】Leetcode_558_四叉树交集_递归。

2022-07-25 10:00:06 112

原创 Leetcode_814_二叉树剪枝_递归

代码】Leetcode_814_二叉树剪枝_递归。

2022-07-21 08:07:00 166

原创 Leetcode_565_数组嵌套_dfs

变种补充如果去掉包含0到N-1的所有整数的条件,采用记忆化dfs。

2022-07-17 15:08:25 93

原创 Leetcode_558_四叉树交集_递归

代码】Leetcode_558_四叉树交集_递归。

2022-07-15 10:18:10 104

原创 Leetcode_745_前缀和后缀搜索_Trie

用两棵Trie的话难度不大,核心是空间换时间的做法,把经过Trie的所有字符串的index存储下来,最后取前缀和后缀匹配list的最大的相等数。至于用一棵树的做法,我个人觉得比较难想到。

2022-07-14 20:45:36 95

原创 Leetcode_735_行星碰撞_栈

最难的部分是抽象出栈这个数据结构

2022-07-13 11:32:26 93

原创 Leetcode_1252_奇数值单元格的数目_水题

水题

2022-07-12 08:30:13 86

原创 Leetcode_676_实现一个魔法字典_trie树

构造trie树即可比较坑的是next数组的判空

2022-07-11 16:51:57 87

原创 Leetcode_729_我的日程安排表1_线段树/思维

很经典的线段树模版题,但也可以用二分的方法去解维护一个有序数组,如果新的日程安排的头尾插入有序数组的位置相同,并且头的下标是0/2/4等偶数,尾的下标为1/3/5等奇数,则插入成功,否则插入失败。...

2022-07-05 10:53:02 129

原创 Leetcode_241_为运算表达式设计优先级_记忆化dfs

将问题递归成子问题对于a * b - c可以先以运算符为分界比如以-号为分界-号左侧a * b-号右侧c所以总的结果中包含(a * b) - ca * b的结果同样递归以此类推在运算过程中有大量的中间态结果是重复需要的,所以用记忆化dfs的方式即可...

2022-07-01 14:00:27 119

原创 Leetcode_324_摆动序列2_三向切分

进阿里实习后都没什么时间写题了QAQ坑蛮多的这题,进阶做法也很难。最朴素的想法就是互插,小的数一组,大的数一组,然后插在一起。但这种做法在小的组最大的数和大的组最小的数相同时会出现问题,所以必须得反插,就是把两组数全部倒过来互插,使得小的组最大的数和大的组最小的数分开。...

2022-06-29 09:59:23 110

原创 Leetcode_436_寻找右区间_二分

好久没写二分了,这种upper和lower的二分用target这种方式写很方便,如果满足条件,就记录target,需要注意的是这里的end是开区间。import java.util.Arrays;import java.util.Comparator;class Solution { static class Node { int index; int[] values; public Node(int index, int[] values

2022-05-20 08:59:02 160 1

原创 Leetcode_953_验证外星语词典_map

class Solution { int[] mp; public boolean isAlienSorted(String[] words, String order) { initMp(order); int len = words.length; for(int i = 0;i < len - 1;i ++) { if(!compare(words[i], words[i+1])) {

2022-05-17 08:30:55 96

原创 Leetcode_面试题04.06后继者_树

在搜索的过程中,如果找到了p就标记一下,如果标记位为true,那么就返回这个值就行了/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { boolean flag;

2022-05-16 08:49:23 122

原创 Leetcode_1823_找出游戏的获胜者_约瑟夫环

以前看了很久都没会,今天看了突然会了,其实很简单,举个例子就行我们定义f(m,n) = m个人,每n个人杀一个的最终获胜者那么f(10,3)就是1,2,3,4,5,6,7,8,9,10中每3个人杀一个的获胜者那么进行完一轮后,就是4,5,6,7,8,9,10,1,2我们对比一下原始的f(9,3)——1,2,3,4,5,6,7,8,9其实很容易观察到这两个数列之间的关系f(10,3) = (f(9,3) + 3 - 1)% 10 + 1其实也就是f(m,n) = (f(m-1,n) + n -

2022-05-04 14:48:00 814

原创 ResultType返回为空

出现情况:返回值为空的arraylist,但是大小是对的原因定位:使用了空构造方法,mybatis在有多个构造方法的时候会优先使用空构造方法?????就nm离谱解决方案:删去空构造方法

2022-03-26 13:06:11 5328

原创 Leetcode_599_两个列表的最小索引总和_模拟

注意一下可以通过i <= sumOfIndex进行一个剪枝class Solution { public String[] findRestaurant(String[] list1, String[] list2) { Map<String, Integer> map = new HashMap<>(); int len1 = list1.length; int len2 = list2.length;

2022-03-14 18:34:21 243

原创 Leetcode_152_乘积最大子数组_动态规划

简单的dp,需要注意考虑0以及只有一个负数的情况class Solution { public int maxProduct(int[] nums) { int temp = 1; int len = nums.length; // 以下标结尾的最大乘积 int[][] dp = new int[len][2]; if(nums[0] > 0) { dp[0][0] = nums[0];

2022-03-14 16:17:28 671

原创 Leetcode_bytedance-006_夏季特惠_01背包

学acm的第一个专题,好怀念改了半天没过,一看题解爆int,气晕import java.util.Scanner;// 一个游戏实际的价格是b - (a - b) = 2 * b - aclass Game { Integer cost; Integer value; public Game(Integer cost, Integer value) { this.cost = cost; this.value = value; }

2022-03-13 10:44:09 414

原创 Leetcode_2055_蜡烛之间的盘子_前缀和

一开始的思路是找到区间内第一个蜡烛和最后一个蜡烛,最后计算这两个蜡烛之间的盘子数量,当然超时了。那么怎么去优化这两个步骤呢,第一个步骤我采取了记录蜡烛位置的方式,通过二分查找区间上下限,定位到第一个蜡烛和最后一个蜡烛的下标;第二个步骤我采取前缀和数组的方式,记录前i个元素中盘子的个数。class Solution { public int[] platesBetweenCandles(String s, int[][] queries) { int m = queries.len

2022-03-08 10:32:40 138

原创 Leetcode_剑指Offer45_把数组排成最小的数_贪心

非常有意思的一道题,我自己一开始做的时候,想了一堆排列策略都是错的,没想到其实就是简单的贪心,如果正着拼接比反着拼接小,肯定正着拼接,哈哈。class Solution { public String minNumber(int[] nums) { int n = nums.length; String[] temp = new String[n]; for (int i = 0; i < n; i++) { temp[

2022-03-07 11:40:15 132

原创 Leetcode_剑指Offer25_合并两个排序的链表_数据结构

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode head = n

2022-03-07 10:30:03 167

原创 Leetcode_剑指Offer04_二维数组中的查找_二分/线性查找

前两天一面的原题,二分还是效率最高的做法,使用那个删行/列复杂度还是有点高class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { int n = matrix.length; if(n == 0) { return false; } int m = matrix[0].length; if

2022-03-07 09:26:46 137

原创 Leetcode_504_七进制数_模拟

特殊情况得多考虑一下class Solution { public String convertToBase7(int num) { if(num == 0) { return "0"; } int temp = num; StringBuilder sb = new StringBuilder(); while(temp != 0) { sb.append(Math.a

2022-03-07 09:15:57 65

原创 Leetcode_剑指Offer46_把数字翻译成字符串_dp

很容易观察到是一道动态规划class Solution { public int translateNum(int num) { String s = String.valueOf(num); int len = s.length(); int[] dp = new int[len]; dp[0] = 1; for(int i = 1;i < len ;i ++) { dp[i] = dp

2022-03-06 13:04:01 58

原创 Leetcode_剑指Offer48_最长不含重复字符的子字符串_滑动窗口

class Solution { public int lengthOfLongestSubstring(String s) { int len = s.length(); if(len == 0) { return 0; } int st = 0; int ed = 0; int ans = 1; boolean[] judge = new boolean[128

2022-03-06 11:27:17 141

原创 Leetcode_剑指Offer26_树的子结构_递归

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) {

2022-03-06 11:04:46 126

原创 Leetcode_2100_适合打劫银行的日子_滑动窗口

官方用的动态规划,我用的滑动窗口。就是维护一个长度为time+1的递减窗口,将符合要求的窗口尾部放入一个set。然后倒序维护一个长度为time+1的递增窗口,如果符合要求的窗口头部在set中,将其放入答案中。class Solution { public List<Integer> goodDaysToRobBank(int[] security, int time) { Set<Integer> left = new HashSet<>()

2022-03-06 10:51:23 135

原创 Leetcode_剑指offer11_旋转数组的最小数字_二分

我也不知道我是怎么过的?class Solution { public int minArray(int[] numbers) { int len = numbers.length; int l = 1; int r = len - 1; while(l <= r) { int mid = (l + r) >> 1; if(numbers[mid] < numbe

2022-03-04 16:58:53 81

原创 Leetcode_739_每日温度_单调栈

判别是否需要使用单调栈,如果需要找到左边或者右边第一个比当前位置的数大或者小,则可以考虑使用单调栈;单调栈的题目如矩形米面积等等class Solution { public int[] dailyTemperatures(int[] temperatures) { int len = temperatures.length; int[] ans = new int[len]; Deque<Integer> stack = new Lin

2022-03-03 21:43:57 5875

原创 Leetcode_146_LRU缓存_数据结构

class Node { Node pre, next; int key, value; public Node() { } public Node(int key, int value) { this.key = key; this.value = value; }}class LRUCache { Node head, tail; Map<Integer, Node> map;

2022-03-03 21:16:34 7391

原创 Leetcode_43_字符串相乘_模拟

好像大一打acm写过?无法理解这竟然是一道面试高频题。。class Solution { public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) { return "0"; } StringBuilder ans = new StringBuilder("0"); int m = n

2022-03-03 21:10:43 87

原创 Leetcode_剑指offer03_数组中重复的数字

将对应数移到对应位上,如果该位上数与要移动的数相同,就找到了,空间O1class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; int i = 0; while(i != len) { if(i == nums[i]) { i++; } else {

2022-03-03 20:37:10 63

原创 字节飞书企业应用暑假实习一面

自我介绍 and 项目介绍一个秒杀项目,问怎么保证原子性(redis)减库存以后,系统挂了,没有将数据持久化到数据库(没回答好,我现在感觉他在问我mq的可靠性怎么保证。。。也可能在问我事务)压测怎么做的数据结构基础数组和链表有什么区别?应用场景?(没想到会问这么基础的数据结构)链表判环(快慢指针)找环的入口(用set,遍历找重复节点)链表找倒数第k个节点什么是栈,什么是队列,应用场景?(真没准备这么基础的问题,有点小慌,想到啥就.

2022-03-03 17:55:41 890 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除