Leetcode刷题笔记
文章平均质量分 57
主要是对于Leetcode的算法题进行归纳总结,由于楼主只用C和C++,一些算法基础了解不深,使用的解法都是最简单的解法,没有高级算法,大部分都是基础。
黑子的ball
忙着赶路
无暇采风
展开
-
嵌入式面试题(五、Linux操作系统)
五、Linux操作系统1、Linux内核的组成部分Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。2、Linux系统的组成部分Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。3、用户空间与内核通信方式有哪些?1)系统调用。用户空间进程通过系统调用进入内核空间,访问指定的内核空间数据;2)驱动程序。用户空间进程可以使用封装后的系统调用接口访问驱动设备节点,以和运行在内核空间的驱动程序通信;3)共享内存mmap。在代码中调用接口原创 2022-05-30 09:15:00 · 2693 阅读 · 0 评论 -
嵌入式面试题(四、常见算法)
四:常见算法1、插入排序基本思想:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。时间空间复杂度:算法适用于少量数据的排序,时间复杂度为O(n^2),空间复杂度为O(1),是稳定的排序方法代码实现public static void insertionSort(int[] array){ int tmp; for(int i=1;i<array.length;i++){原创 2022-05-30 07:15:00 · 860 阅读 · 0 评论 -
嵌入式面试题(三、网络编程)
三、网络编程1、TCP、UDP的区别TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。UDP—用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。1)TCP是面向连接的,UDP是面向无连接的2)UDP程序结构较简单3)TCP是面向字节流的,UDP是基于数据报的4)TCP保证数据正确性,UDP可能丢包5)TC原创 2022-05-29 20:00:00 · 866 阅读 · 0 评论 -
嵌入式面试题(二、C/C++)
二、C/C++1、new和malloc1)malloc和free是c++/c语言的库函数,需要头文件支持stdlib.h;new和delete是C++的关键字,不需要头文件,需要编译器支持;2)使用new操作符申请内存分配时,无需指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地支持所需内存的大小。3)new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无需进行类型转换,故new是符合类型安全性的操作符。而malloc内存分配成功则是返回void*,需要通原创 2022-05-29 15:41:26 · 1437 阅读 · 0 评论 -
嵌入式面试题(一:进程与线程)
一、进程与线程1、什么是进程、线程,有什么区别?进程是资源(CPU、内存等)分配的基本单位,线程是CPU调度和分配的基本单位(程序执行的最小单位)。同一时间,如果CPU是单核,只有一个进程在执行,所谓的并发执行,也是顺序执行,只不过由于切换速度太快,你以为这些进程在同步执行而已。多核CPU可以同一时间点有多个进程在执行。2、多进程、多线程的优缺点说明:一个进程由进程控制块、数据段、代码段组成,进程本身不可以运行程序,而是像一个容器一样,先创建出一个主线程,分配给主线程一定的系统资源,这时候就可以在主原创 2022-05-29 15:31:35 · 975 阅读 · 0 评论 -
链表打印(链表反转输出)
1、题目描述:输入一个链表的头节点,从尾到头反过来打印每个节点的值,链表定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;}2、测试用例功能测试(输入的链表有多个节点;输入的链表只有一个节点)特殊输入测试(输入的链表头结点指针为NULL)3、解答思路思路:遍历链表。但是遍历的顺序是从头到尾,可输出的顺序却是从尾到头。也就是说,第一个遍历的节点最后一个输出,而最后一个遍历的节点第一个输出。这个也可以看成栈,用栈来实现。每经过一个原创 2021-08-15 13:40:41 · 1705 阅读 · 0 评论 -
字符串替换相关题目(合并数组)
1、题目描述:有两个排序数组 A1 和 A2,内存在 A1 的末尾有足够多的空余空间容纳 A2。请实现一个函数,把 A2 中的所有数字插入到 A1 中,并且所有的数字是排序的。2、测试用例3、解答思路思路一:从头到尾扫描字符串,每次碰到空格字符的时候进行替换。但是由于是把1个字符替换成3个字符,就必须要把空格后面所有的字符后移2字节。思路二:在合并两个数组(包括字符串)时,如果从前往后赋值每个数字(或字符),则需要重复移动数字(或字符)多次,那么我们可以考虑从后往前复制,这样就能减少移动的次数,从原创 2021-08-15 09:42:06 · 175 阅读 · 0 评论 -
字符串的替换
1、题目描述:请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入“We are happy.”,则输出“We%20are%20happy.”2、测试用例输入的字符串包含空格(空格位于字符串最前面;空格位于字符串最后面;空格位于字符串中间;字符串中有连续多个空格)输入的字符串没有空格特殊输入测试(字符串是一个NULL指针;字符串是一个空字符串;字符串只有一个空格字符;字符串中有连续多个空格)3、解答思路思路一:从头到尾扫描字符串,每次碰到空格字符的时候进行替换。但是由于是把1个转载 2021-08-11 20:44:55 · 4654 阅读 · 1 评论 -
数组中查找数字(二维数组)
1、题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2、测试用例:长度为n的数组中包含一个或多个重复的数字数组中不包含重复的数字无效输入测试用例(输入空指针;长度为n的数组中包含0~n-1之外的数字)3、解答思路:思路一:两层遍历,暴力解法,一个元素一个元素遍历是否等于前面的元素 复杂度分析:时间复杂度O(N^2),空间复杂度O(1)...原创 2021-08-10 19:22:44 · 586 阅读 · 0 评论 -
数组中重复的数字(数组元素个数大于数组长度)
1、题目描述:在一个长度为n+1的数组里所有数字都在1~n的范围内,所以数组内至少有一个数字是重复出现的。请找出这个数组中任意一个重复出现的数字,但不能修改数组,例如:如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者1。注:该方式2、测试用例长度为n的数组中包含一个或多个重复的数字数组中不包含重复的数字无效输入测试用例(输入空指针)3、解答思路思路:类似于二分法处理把1~n的数字从中间数字m分为两部分,前面一部分为1-m,后面一半为M+1_n。转载 2021-08-09 15:31:31 · 440 阅读 · 1 评论 -
数组中重复的数字(数组元素个数等于数组长度)
1、题目描述:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7,的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数组2或者3。注:该方式2、测试用例长度为n的数组中包含一个或多个重复的数字数组中不包含重复的数字无效输入测试用例(输入空指针;长度为n的数组中包含0~n-1之外的数字)3、解答思路思路一:两层遍历,暴力解法,一个元素一个元素原创 2021-08-08 22:25:02 · 330 阅读 · 1 评论 -
Leetcode第一题:两数之和
题目:给定一个整数数组 nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路:暴力法:遍历数组每个元素,利用双重循环遍历当前值和另一个当前值与目标值target比较是否相等,如果相等则返回结果。代原创 2021-05-13 15:05:02 · 146 阅读 · 0 评论