- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 《程序员面试金典》--判断链表是否为回文链表
题目描述:请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true测试样例:{1,2,3,2,3}返回:false题目分析:《方法1》:反转链表 可以将原始链表反转,判断反转以后的链表与原始链表是否完全一致,如果一致便返回true,如果不一致则返
2015-09-24 19:36:33 1689
原创 《程序员面试金典》--链表相加
题目描述1: 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。测试样例: {1,2,3},{3,2,1}返回: {4,4,4}题目分
2015-09-23 20:09:49 1292
原创 学习笔记--页面置换算法详解
地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。常见的置换算法有:1)最佳置换算法(OPT)(理想置换算法) 这是一种理想情况下的页面置换算法,但实际上是不可能实现的。该算法的基本思想是:发生缺页时,选择内存中最后要被访问
2015-09-22 20:09:29 4353
原创 《程序员面试金典》--分割链表
题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。题目分析:要是链表换作数组要特别小心,因为搬迁数组要涉及到移动元素的开销,而移动链表的元素则容易很多,我们不需要移动和交换链表中的元素,只是改变一下每个节点的n
2015-09-21 20:37:05 1311 2
原创 《程序员面试金典》--删除链表中的某个元素(这个元素只能访问)
题目描述:实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true题目分析:对于一个单向链表,如果给出其中一个节点的情况下,想把这个节点删除,删除该节点以后,还希望链表完整的,这个时候我们无法获取当前节点前面一个节点,只能获取其后面一个节点,如果把当前节点删除掉,那么就无法让链表完整,这
2015-09-17 15:52:11 711
原创 《程序员面试金典》--找出链表中倒数第k个节点
题目描述: 给定一个单向链表的头结点,找出链表中倒数第k个节点方法1(求长度):可以首先遍历链表,求出链表的长度L,再继续从头节点开始遍历一次链表,走到L-K的位置便是所求的节点。这样就要遍历两次链表O(2N);方法2(递归实现):递归遍历链表,当达到链表末尾时候,传递一个值为0的计数器,之后每次调用将该计数器加1,当计数器等于k时,便将该节点返回,只需要遍历一次链表,
2015-09-16 17:59:38 759
原创 学习笔记--多道程序的CPU调度算法
(1)何时调度:① 在创建一个新进程时,需要决定是运行子进程还是父进程② 在一个进程退出时,必须做出调度决策③ 当一个进程阻塞在I/O和信号量上或者由于其他原因阻塞时,必须选择一个进程。④ 当一个I/O中断发生时,必须做出选择。前两个调度属于非抢占调度,后面两个是抢占调度。(2)调度参数说明:① CPU使用率:要求40%到90%② 吞吐量:一个时间单元内所完成进程的
2015-09-16 16:51:06 2950
原创 《程序员面试金典》--判断反转字符串
题目描述:假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","
2015-09-15 20:16:51 1324
原创 《程序员面试金典》--清除二维数组中元素为0所在的行和列
题目描述:请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。给定一个MxN的int[][]矩阵(C++中vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector),保证n小于等于300,矩阵中的元素为int范围内。测试样例:[[1,2,3],[0,1,2],[0,0,1]]返回:[[0,0,3],[0,0,0],[
2015-09-15 19:17:55 1731 1
原创 学习笔记--进程及线程间通信方式的区别及联系
1、进程、线程通信概念:(1)进程用户空间是相互独立的,一般而言是不能相互访问的,唯一的例外是共享内存区、 内核空间、以及可以访问的外设,所以不管是进程和线程都是需要通信的。(2)进程通信要解决三个问题:① 既一个进程如何把消息传递给另一个。② 确保两个或者多个进程在关键活动中不会出现交叉。③ 第三个问题与正确顺序有序。这三个问题的后两个问题对线程也是使用的,所以同样的问题
2015-09-15 18:55:10 3203
原创 学习笔记--进程与线程的区别及联系
(1)定义: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。(2)资源的共享: 多个线程共享同一地址空间和其他资源,而多个进程共享物理内存、磁盘、打印机和其他资源。 每个进程中的内容有:地址空间、全局变量、打开的文
2015-09-15 12:31:23 441
原创 《程序员面试金典》--像素反转
题目描述: 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,
2015-09-11 19:20:42 718
原创 《程序员面试金典》--基本字符串压缩
题目描述:利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。测试样例:"aabccccc
2015-09-11 16:56:30 915
原创 学习笔记--进程的三种基本状态及其转换
(1)一个运行中的进程不断改变其状态,通常进程必须具备以下三个基本状态: ①就绪状态: 当进程已分配到除CPU以外的所有必要资源后,只要在获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。 ②运行状态: 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于运行状态;
2015-09-11 11:29:03 1088
原创 学习笔记--进程与程序的区别和联系
进程与程序的区别和联系:(1)一个进程是一个正在执行程序的实例,包括程序计数器,变量的当前值和寄存器以及 程序,输入输出,状态。程 序是存储在磁盘上的一系列代码和数据。(2)进程是一次运行的活动,属于一种动态概念,程序是一组有序的静态指令,属于一种 静态概念。(3)进程是执行程序的动态过程,程序是进程运行的静态文本,进程不能离开程序。(4)一个进程只能执行一个程序
2015-09-11 11:04:07 1070
原创 《程序员面试金典》--空格替换
题目描述: 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string。测试样例: "Mr John Smith”,13 返回:"Mr%
2015-09-10 21:50:06 680
原创 《程序员面试金典》--确定两串乱序同构
题目描述:给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。测试样例:"This is nowcoder","is This nowcoder"
2015-09-09 15:30:44 1132 2
原创 《程序员面试金典》--反转字符串
题目描述:请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量),给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。测试样例:"This is nowcoder"返回:"redocwon si sihT"题目分析: 这道题目难度不是很大,首先可能会想到,重现建
2015-09-09 15:04:29 1254
原创 《程序员面试金典》--确定所有字符是否互异
题目描述:请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。给定一个stringiniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。思路一:(时间复杂度为O(N*N)) 看到这道题目第一想法就是将每个字符与其他字符进
2015-09-08 17:22:48 2260 4
原创 数据库-触发器(定义、作用、使用方法、new/old虚拟表)
(1)触发器定义: 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。(2)触发器的作用: 1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利。 2.审计。可以跟踪用户对数据库的操作。 3.实现复杂的数据完整性规则 # 实现非标准的数据完整性检查和约束。触
2015-09-01 11:17:57 12651 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人