![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试用
文章平均质量分 50
(_Marvin_)
这个作者很懒,什么都没留下…
展开
-
面试题12:矩阵中的路径
剑指 Offer 12. 矩阵中的路径给定一个m x n 二维字符网格board 和一个字符串单词word 。如果word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。示例 1:输入:board = [["A","B","C","E"]...原创 2021-12-05 16:44:00 · 240 阅读 · 0 评论 -
面试题11:旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0这道题,表面上看起来很简单,直接遍历就可以得出最小值,时间复杂度为O(n)也刚刚好感觉不是很高,面试官就会提示你,是不...原创 2021-11-26 11:12:17 · 93 阅读 · 0 评论 -
面试题10-2:青蛙跳台阶问题
剑指 Offer 10- II. 青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100这道题与之前的斐波那契数列相似,重点不是解法,而是如何总.原创 2021-11-25 18:25:26 · 237 阅读 · 0 评论 -
面试题10-1:斐波那契数列
剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = ...原创 2021-11-25 17:38:03 · 223 阅读 · 0 评论 -
面试题9:用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","de.原创 2021-11-25 16:58:24 · 116 阅读 · 0 评论 -
面试题7:重建二叉树
剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]限制:0 .原创 2021-11-23 23:55:35 · 198 阅读 · 0 评论 -
链表与树 python
链表与树是面试中出现频率最高的数据结构。链表之所以频率比较高,是因为在面试那中时长控制下,时间上是不允许面试官有太多的时间考察算法题,所以一些高难度的算法题一般都是说出一些思路或者写出核心算法就好,而难度太低的数组和字符串考察难度太低而被很多面试官选择性的放弃,再说链表这种数据结构,结构简单,但是可以考察的点会很多,简单点的像写出链表的插入和删除方法,难点的直接一道相关算法题,但是整体的代码量都不是很大,难度也不会很简单。整体来说之所以面试考察的比较频繁,就是因为代码量少而精,有一定难度从而有了一定原创 2021-11-22 21:10:17 · 986 阅读 · 0 评论 -
面试题6:从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000链表是单向链表,从头到尾直接遍历一遍即可,而从尾到头就有点难度了。一般解法就是使用栈来作为缓存,这样时间复杂度可以是O(n),但是用到了额外的栈,从而使得空间复杂度为O(n);另一种解法就是反转链表后遍历,从而不用使用到栈,空间复杂度可以降低到O(1原创 2021-11-22 20:54:20 · 503 阅读 · 0 评论 -
数组与字符串 python
数组和字符串是两种最基本的数据结构。这两种数据结构相似点在于使用连续的内存存储,在面试中属于比较简单的题,一般专门考察数组和字符串出现的概率不是很大,但是会出现在面试题中作为其中一种解体方法或者作为解体中的一个步骤。数组最简单的数据结构,一块连续的内存存储所有的数据,所以可以根据下标在O(1)时间内读写任意数据,时间效率很高,也可以用这点来实现一个简单的哈希表:把数组的下标设置成key,对应的值设置成value。数组有一维数组和多维数组,简单的数据结构算法题不一定简单,比如这道题面试题3:数原创 2021-11-22 14:24:40 · 685 阅读 · 0 评论 -
面试题5:替换空格
剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000这道题题意很简单,就是替换所有的空格,不过不是等量替换,而是将一个字符替换成三个字符,如果是c语言的话,就要重新分配新的空间,而且后面的字符要全部后移,难点就来了,如果直接从前到后遍历,遍历到一个空格就扩展一次,后移一次,替换一次。当原创 2021-11-22 10:56:00 · 599 阅读 · 0 评论 -
面试题4:二维数组中的查找
剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]...原创 2021-11-21 23:02:43 · 383 阅读 · 0 评论 -
面试题3:数组中重复的数字
剑指 Offer 03. 数组中重复的数字题目:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 2 <= n <= 100000解题:首先分析好题目,长度为n,范围为0~n-1,也就是不重复的情况下刚刚好有所有数字,但是重复的原创 2021-11-18 00:21:17 · 259 阅读 · 0 评论 -
队列和栈 python
队列的特点是先进先出,这个特性套用python来实现的话,list最为方便创建一个队列queue = list()向队列中插入一个数据 这里插入一个数字1queue.append(1)队列中出一个数据 使用pop可以指定下标,所以指定下标0为队列中第一个数据queue.pop(0)...原创 2021-11-17 00:03:49 · 926 阅读 · 0 评论 -
数据结构基础 python
以下是python语言实现对应的一些基础的数据结构,面试时虽然不会直接考,但是很多数据结构由于平时不用,比如红黑树等,很多人甚至从来也没写过这些基础数据结构在对应语言中怎么写队列:队列的特性就是先进先出,在python中可以用数组来作为队列使用。初始化队列:queue = list()进队列:queue.append(i)出队列:queue.pop(0)进队列时不用判断,出队列时得先判断队列是否不为空,否则会报错。栈:栈的特性是先入后出,在python中可.原创 2021-11-11 00:52:27 · 1190 阅读 · 0 评论 -
递归与非递归 python
面试题中很多都涉及到递归与非递归,比如二分法,冒泡,归并,快排,二叉树前中后遍历等等,建议能直接给出非递归形式,如果面试官想要看到递归形式也能熟练的写出来。典型的面试题比如说:汉诺塔问题,斐波那契数列等递归是什么?和循环的区别答:递归从字面意思理解是自己调用自己,实际上递归是将问题逐渐分解减小,但是和原问题有着相同解法的问题,并且存在一个问题的出口。循环就是重复执行同一段代码打一个比方吧,从前有座山,山里有座庙,庙里有个老和尚和小和尚,老和尚对小和尚说,从前有座山,山里有座庙,庙里有原创 2021-11-09 21:04:08 · 1673 阅读 · 0 评论 -
归并排序 python
归并排序的思想就是先递归拆分当前的数组,然后再进行排序递归的算法实现如下:def merge(nums_l,nums_r): l,r = 0,0 new_nums = list() while(l<len(nums_l) and r<len(nums_r)): if nums_l[l] <= nums_r[r]: new_nums.append(nums_l[l]) l = l+1原创 2021-11-09 09:29:15 · 235 阅读 · 0 评论 -
快速排序 python
使用快排对数组进行排序递归法def quickSort(nums,low,pre): if low >= pre: return nums i = low j = pre pivot = nums[low] while(i < j): while(i<j and nums[j] >= pivot): j = j - 1 nums[i],nums[j]=nums[j原创 2021-11-08 19:22:31 · 83 阅读 · 0 评论 -
冒泡排序 python
冒泡排序的python实现def bubbleSort(nums): arr = nums[:] if len(arr) > 1: for i in range(len(arr)): for j in range(len(arr) - i - 1): if arr[j] > arr[j+1]: arr[j],arr[j+1] = arr[j+1],arr[j]原创 2021-11-08 11:22:23 · 551 阅读 · 0 评论 -
二分查找 Python
二分法可以求有序数组中是否存在该值# -*- coding:utf-8 -*-nums0 = [0,1,1,1,2,3,4,5,6]nums1 = [0]nums2 = [1]nums3 = []nums4 = [1,2,3]i = 0j = 6def BinarySearch(nums,value): left = 0 right = len(nums) - 1 while (left <= right): middle = i原创 2021-11-06 18:41:04 · 145 阅读 · 0 评论