噜啦噜啦嘿

Thinking will not overcome fear but action will.

操作系统读书笔记一

操作系统精髓与设计原理第八版

概述 基本特征 并发性:是指两个或两个以上的事件或活动在同一个时间间隔内发生 并行则指同一时刻能运行多个指令 并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。 操作系统通过引入进程和线程,使得程序能够并发运行 共享性:是操作系统的另一个重要特征,是指系统的资源(包括软件资源和硬件资源)可以同时被多个并发执行的进程共同使用而不是被一个进程独占,由...

Collection集合

数据结构

Arraylist 与 LinkedList 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 底层数据结构: Arraylist 底层使用的是Object数组;LinkedList 底层使用的是双向链表数据结构(注意双向链表和双向循环链表的区别:); 插入和删除是否受元素位置的影响: ① ArrayList...

剑指offer第9题“变态跳台阶”

变态跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 *** 思路 参考上一题可知 f(n)=f(n-1)+f(n-2)+…+f(1) f(n-1)=f(n-2)+…+f(1) 得f(n)=2*f(n-1)结束 C++实现 class Solution { public: int jumpFloorII(...

剑指offer第8题“跳台阶”

跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) *** 思路 为什么要把这题放在斐波那契的后面。。代码拿过来改下初值和n就可以了 C++实现 class Solution { public: int jumpFloor(int number) { if(number==0||num...

剑指offer第7题“斐波那契数列”

斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 *** 思路 递归肯定超时不用想,那就for循环的O(n),两个数相加再相减,就能每次保存临近两个值 一开始还在想39会不会爆int,后来发现模板返回的是int,那就不管了 如果n特别大,可以用python写,大数贼舒服 C++实现 class S...

剑指offer第6题“旋转数组的最小数字”

旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 *** 思路 一:暴力O(n) 二:二分,首先判断第一个值与最后一个值的大小关系,如果...

剑指offer第5题“用两个栈实现队列”

用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 *** 思路 栈是先进后出,队列是先进先出。用两个栈s1,s2来模拟队列,可以现将所有数据存入s1,再将s1中数据存入s2。从s2中提取的数据就是先进的数据。 因为题意是模拟队列的push和pop,不是一次性的操作。push可以就是将数据存入s1,而pop就要判断s2是否为空了,...

剑指offer第51题“构建乘积数组”

构建乘积数组 题目描述 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1]。不能使用除法。 *** 思路 类似于求数组的前缀和与后缀和一样,求出前缀积与后缀积 然后选择相应的头尾想乘得到最终结果 C++实现 class Solution { public: vector mul...

剑指offer第50题“数组中重复的数字”

数组中重复的数字 题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 *** 思路 数组中数字的大小已经确定为0·n-1之间。所以如果numbers[i]出现了,我们就...

一些多线程的总结

线程与进程的概念与区别 线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。 程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。 进...