- 博客(15)
- 收藏
- 关注
原创 Linux操作篇
在桌面端,Linux大概落后20年服务器端,公司的大多数服务器端基本都是linux移动端,Android本质上是Linux,ios虽然不算linux,但是比表兄弟关系嵌入式,清一色的Linux。
2023-09-13 18:12:03
36
2
原创 多线程_基础和方法应用
(为了更好的理解多线程):磁盘和网络一起称为IO:为了使参与并发执行的每个程序,包含数据都能独立地运行,在操作系统中必须为之配置一个专门的数据结构,称为进程控制块进程与PCB是一一对应的,用户进程不能修改。组织形式是通过双向链表来把多喝PCB给串到一起,创建一个进程,本质上就是创建一个PCB这样的结构体对象,把它插入到链表中,任务管理器查看到进程列表,本质就是遍历这个PCB链表。:进程的身份标识(唯一):指向自己的内存是哪些:硬盘上的文件和其他资源。
2023-07-22 17:46:38
38
原创 算法分析-时间复杂度
》大O表示法只是对程序执行时间的一个估算(大O是一个渐进表示法,不会去表示精确的次数,cpu的运算速度很快,估计精确的没有意义。如果在一个大小为n循环中,循环变量按照一个常量C的进行倍数的递增或递减,这个循环的复杂度就为O(Log n).如果在一个大小为n循环中,循环变量是指数级的递增或递减,这个循环的复杂度就为O(Log log n).如果在一个大小为n循环中,循环变量按照一个常量C递增或递减,这个循环的复杂度就为O(n)当有连续的循环,我们计算时间复杂度为时间各个循环的复杂总和。
2023-07-18 10:04:43
36
1
原创 JAVA_线程安全问题
一个进程有多个线程组成,而在多线程的情况下,程序要抢占cpu的核心去执行代码,代码的执行顺序就会有变化。因为不同时间、不同的cpu内执行代码,就会产生无数种不同的情况,就需要保证者无数种线程去按照一定的顺序进行运行,来保证结果的正确性。如果是两个线程并发去执行这count++这个操作,就相当于两组load、add、save进行此时不同的线程调度顺序,就可能产生一些结果上的差异。显然答案并不是1_0000,而且两次的答案都不是一样的,程序并不符合需求,出现了bug,这也就是典型的线程安全问题。
2023-07-18 00:54:07
32
1
原创 「不得不看」插入排序
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。如果array[j] > tmp,然后比较array[j] 和tmp的大小。反之将tmp给到array[j+1]O(N),最好的情况,就是有序。但是一个本身就不稳定的排序,是不可以变成稳定的排序。:1、第一个数本身有序,i从第二个数开始。一个稳定的排序,可以实现为不稳定的。如果不要等号,就是不稳定的。:O(N^2),最坏情况。:稳定,因为没有换位。
2023-05-16 22:44:09
36
原创 「不得不看」的泡沫排序以及优化
2、如果其中一趟没有发生排序,证明他已经有序。在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。java自带的Array包里面带得有Array.sort()方法。时间复杂度:O(N^2) 如果有序:O(N)代码的优化有两点:1、每次排完,最后一个是不需要排的。空间复杂度:O(1)
2023-05-16 08:58:34
47
原创 面试题 02.02. 返回倒数第 k 个节点
方法2:fast先k,在和slow同时走1步,fast为空,弹出。快慢指针:方法1:fast先k-1步,在和slow同时走1步,fast.next为空,弹出。实现一种算法,找出单向链表中倒数第 k 个节点。在考虑,严谨一点,就是k是否满足逻辑,head是否为空。代码优化:考虑不用遍历,就能够知道哪个是倒数的k节点。输入: 1->2->3->4->5 和 k = 2。注意:本题相对原题稍作改动。给定的 k 保证是有效的。
2023-05-12 11:47:28
28
原创 剑指offer -》反转链表
4、还有其他写法,但要注意,cur为空之后,就不能让curNext = cur.next。3、在将pre改到当前节点,把cur改到下一个节点。2、cur先改当前节点的next引用。思路:1、设置三个引用,pre、cur、curNext。,请你反转链表,并返回反转后的链表。
2023-04-27 20:10:13
28
1
原创 合并两个升序链表
3、newHead赋值-1其实是傀儡节点,后面直接返回newHead.next就不用在考虑是list1还是list2的头,减少代码。2、其中一个为空的情况可以在最后判断,就不用单独去写。新链表是通过拼接给定的两个链表的所有节点组成的。思路:1、三种情况:两个都为空、一个为空、两个都不为空。将两个升序链表合并为一个新的。
2023-04-27 19:55:15
280
1
原创 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
链表提醒,删除所有key值
2023-04-26 21:14:05
146
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人