- 博客(22)
- 收藏
- 关注
原创 2020-11-14
在行递增和列递增的矩阵中进行查找进行一个模拟,不是从左上角开始查找,而是从右下角开始查找,利用递增的性质,有时候可以直接排除某一行或者某一列打印两个有序链表的公共部分类比mergesort的过程链表问题面试过程中,经常需要使用额外空间复杂度最低的方式来解决判断一个链表是否为回文结构额外空间复杂度高的情况:从中点分开,然后依次对比,这个复杂度是O(N)空间少的解法:用一个快慢指针首先找到中点,然后直接原地的,把右半部分反转,之后再用两个指针依次移动对比,注意这个解法的最后应该给人家把原始的
2020-11-15 00:33:50
74
原创 2020-11-12笔记
猫狗队列问题设计一个结构,既可以存储dog类对象也可以存储cat类对象,然后可以实现poll,add,isempty等操作在这个结构里面有一个狗队列和一个猫队列,但是狗和猫的相对位置需要加入一个时间戳的概念所以在队列里面加一个变量count来表示这个时间戳的概念,每加入一个宠物就count++,再存到宠物的队列里然后弹出的时候,看猫的count小还是狗的count小,谁大返回谁的转圈打印矩阵按照分圈的结构把它解决掉,就单独某一圈来说写一个单元函数这个单独的函数需要解决一下边界的问题,比如左边界
2020-11-13 01:20:22
64
原创 2020-11-11笔记
排序的稳定性相同的数字,是否会因为排序的过程,原来的相对位置被打乱冒泡排序:相邻交换的时候,相等的不进行交换的话,这个冒泡排序是稳定的,如果算法写成等于也交换,那么就是不稳定的了选择排序:找到最小值的位置,然后把最小值和0号位置的数字进行交换,这个相对位置肯定就变了,所以是不稳定的归并排序:merge的过程中,分成了左区域和右区域,只要保证左右两边相等的时候先拷贝左区的,左区拷贝完了再拷贝右区的,这样就可以保持稳定了快排partition:做不到稳定性堆排:在建立大根堆的时候,做上浮交换的节点是
2020-11-12 01:38:42
140
原创 2020-11-10
荷兰国旗问题这个的基本思想就是partition,也就是区域划分的思想有一个小于等于区域,有一个大于等于区域,在进行小于等于区域与中间区域的交换以后那么就存在三个指针,一个小于区域的尾指针,一个大于区域的头指针,一个cur指针移动cur,然后进行比较,看大于还是小于,然后把小于区域的部分和大于区域的部分往中间扩张嘛注意a++和++a的区分和应用写一个while,退出的条件是cur指针等于大于区域额头指针more,我们可以把cur指针到more之间的部分看成是待定区,所以退出的条件就可以理解为待定
2020-11-11 01:31:01
158
原创 2020-11-07安排
路线java基础看得差不多了剩下需要见缝插针补习一下的还有:1.java的GC和NIO2.剩下的几种设计模式3.mysql4.spring/springmvc/springboot不过这些就平时抽空看吧,接下来的重点是1.做项目项目思路2.看源码主要在公众号,每天看两篇吧,主要是需要带有目的性地看3.看算法教程主要看左神的,然后自己写目标:11月看完至少30篇源码/每天两道算法题/做完一个项目项目当我们做一个项目的时候重点去写什么?...
2020-11-08 01:27:17
112
2
原创 2020-11-06刷题
链表的奇偶重排import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param head ListNode类 * @return ListNode类 */
2020-11-07 01:51:11
66
原创 2020-11-05
多线程进程:进入到内存的程序线程:在进程里,开启一条到cpu的执行路径,cpu可以通过这个路径执行功能,这个路径就叫线程单个的cpu在多个线程之间做高速切换,8核的就是可以同时执行8个线程,所以就是单线程的8倍,多线程的好处就是效率高,多个线程之间不影响线程调度的方式1.抢占式调度(优先级高的就先占领)2.分时调度主线程:执行main方法的线程如何创建多线程?1.将类声明为Thread的子类,重写run方法子类public class MyThread extends
2020-11-06 01:25:18
83
原创 2020-11-04
合并两个有序的数组感觉这题怪怪的,也就是说A的length和A里面数字的个数m是不相等的?这是一个int[]开始就应该固定长度了嘛…感觉还是怪怪的还有一个常用的写法,right–这种因为是返回了原本的right值以后再让right减-,所以可以直接写在括号里面变成一行public class Solution { public void merge(int A[], int m, int B[], int n) { int right=A.
2020-11-05 03:51:14
106
原创 2020-11-03
岛屿数量第一种方法,用队列来完成一个BFS注意访问过的节点,就应该把它从1变成0,这样才不会重复import java.util.*;class Point{ int x; int y; Point(int x,int y){ this.x=x; this.y=y; }}public class Solution { /** * 判断岛屿数量 * @param grid char字符型二维数组
2020-11-04 00:53:41
60
原创 2020-11-02
螺旋矩阵import java.util.*;public class Solution { public ArrayList<Integer> spiralOrder(int[][] matrix) { ArrayList<Integer> result=new ArrayList<>(); if(matrix.length==0) return result; int n=matrix.l
2020-11-03 00:34:51
72
原创 2020-11-01
二叉树根节点到叶子节点的和为指定值的路径标准的一个dfs加回溯=退出条件+题目要求做的事情+子问题继续dfs+还原,一定要还原import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param roo
2020-11-02 00:15:48
59
原创 2020-10-31笔记
最小编辑代价动态规划,但是这个递推公式说实话我老是想不通…import java.util.*;public class Solution { /** * min edit cost * @param str1 string字符串 the string * @param str2 string字符串 the string * @param ic int整型 insert cost * @param dc int整型 delete cost
2020-11-01 01:40:46
100
原创 2020-10-30笔记
大数加法就是保留一个进位carry,注意要先分两个字符串的长短public class Lianxi { public static String solve (String s, String t) { int n1=s.length(),n2=t.length(); if(n1<n2){ String temp=t; t=s; s=temp; }
2020-10-31 01:44:26
159
3
原创 2020-10-29刷题
面试考察点:spring mvc源码,mybatis和redis使用,数据库…这几个学习从11月得开始了,然后自己做项目和项目重构
2020-10-29 08:51:28
90
原创 2020-10-28刷刷刷
没睡好,心情不好,今天可能会多刷几道冷静一下反转链表需要理清的一个思路是,我们在对链表做反转的时候,用到了两个指针,一个是pre一个是cur,然后每一次反转都把这两个指针往后移动一位/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public Li
2020-10-29 01:06:51
149
1
原创 2020-10-27刷题
求平方根原本是写成这样超时了import java.util.*;public class Solution { /** * * @param x int整型 * @return int整型 */ public int sqrt (int x) { // write code here int result=1; if(x<=1){ return x;
2020-10-28 02:34:55
74
原创 2020-10-26刷题
斐波那契数列哎,让我刷个题冷静一下我实验室ptsd,一到实验室,一想到实验室整个人都不对劲了,这段时间刷题找工作简直是我人生唯一的快乐……所以说我确实适合干开发岗,面试虽然不能这么回答但是实验室搞算法的氛围让我抑郁,曾几何时我也是想认真搞算法的,现在觉得搞开发真他妈的快乐,付出就有收获,还不用迎合会议论文狗屁不通的逻辑,还不用被导师开一次会否定一次,实习写代码的时光就是老子最快乐的时光,哈哈!我,永远的开发人第一种方法递归public class Solution { public int
2020-10-27 02:28:54
62
原创 2020-10-25刷题学习
重建二叉樹就是一个递归注意退出递归的条件,length=0的时候就返回同样类型的,这里因为是树节点所以返回null,之前面试的时候就说返回null了面试官还说返回treenode= =惹另外java里面不像python那样直接找.index,所以还是写一个循环来找root节点的下标Index,然后根据这个下标分成前后两半注意Arrars.copyofrange的时候,是左闭右开的/** * Definition for binary tree * public class TreeNode {
2020-10-26 02:41:27
72
原创 2020-10-24刷题
最小的K个数注意最小堆和最大堆的写法,另外求最小K个数的时候维护的是一个K大的最大堆另外和求第K大的数区分一下,那个用一个partition做搜索就够了,当然维护堆也不是不行…java用priorityqueue来实现堆,常用到的方法offer加入poll拿出peek求最大堆的最大值或最小堆的最小值import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Soluti
2020-10-25 00:18:28
64
原创 2020-10-23JAVA学习+刷题
跳台阶动态规划+滚动数组public class Solution { public int JumpFloor(int target) { int[] shuzu=new int[3]; for(int i=0;i<=target;i++){ if(i==0){ shuzu[i]=1; }else if(i==1){ shuzu
2020-10-24 02:33:50
101
原创 数学题准备
国考数学题方法论选项比较少的时候带入明天继续方法论选项比较少的时候带入1、这方法有个tip,为了保证带入得更少,求最小的时候从最小开始带,求最大的时候从最大开始带存在2、利用奇偶、倍数明天继续...
2020-10-23 22:45:55
130
原创 计划表
毕业前准备java开发准备技术美术准备国考倒计时毕业论文与答辩java开发准备java课程leetcode每天2-3道题刷题技术美术准备unity编程虚幻四基础项目准备国考倒计时每天一小时课程毕业论文与答辩项目论文终稿编写...
2020-10-23 22:16:54
73
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人