随笔分类 - 面试题
摘要:leetcode 4月刷题笔记 栈 1 20有效的括号 题目:https://leetcode-cn.com/problems/valid-parentheses/ 解法: func isValid(s string) bool { // 左括号直接入栈 // 右括号对应左括号弹出 // 否则报错
阅读全文
摘要:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 4
阅读全文
摘要:// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点。链表结点与函数的定义如下: // struct ListNode{ // int m_nValue; // ListNode* m_pNext; // }
阅读全文
摘要:// 面试题17:打印1到最大的n位数 // 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则 // 打印出1、2、3一直到最大的3位数即999。 解题思路: 首先是一个大陷阱,n有多大?万一大到long long类型都盛不下,你要直接动手写,那写的再正确也是凉凉。 我们考虑到用
阅读全文
摘要:// 面试题16:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方。不得使用库函数,同时不需要考虑大数问题。 解题思路: 解题并不难,重要的是要考虑到输入的各种情况,并且有相应的处理。 dou
阅读全文
摘要:// 面试题15:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如 // 把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路: 1)常规思路: 首先考虑位与运算,每次都让目标数字和1做位与运算,然后将目标数字右移一位, 多少
阅读全文
摘要:// 面试题14:剪绳子 // 题目:给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n>1并且m≥1)。 // 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]*k[1]*…*k[m]可能的最大乘 // 积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三
阅读全文
摘要:// 面试题13:机器人的运动范围 // 题目:地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它 // 每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和 // 大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18
阅读全文
摘要:// 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有 // 字符的路径。路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左、右、 // 上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入 // 该格子。例如在下面的3×4的矩阵中包含一条字符串“bfce”
阅读全文
摘要:// 面试题11:旋转数组的最小数字 // 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 // 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 // {3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 解题思
阅读全文
摘要:// 面试题10:斐波那契数列 // 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。 // 面试题10:斐波那契数列 // 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。 解题思路: Fibonacci数列,不用多说,相信大家都了解,f(0)=0,
阅读全文
摘要:// 面试题9:用两个栈实现队列 // 题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail // 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 相关类和函数定义如下: template <typename T> class CQueu
阅读全文
摘要:// 面试题8:二叉树的下一个结点 // 题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? // 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针。 // 二叉树的结构体定义如下。 struct BinaryTreeNode { int m_nVal
阅读全文
摘要:// 面试题7:重建二叉树 // 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输 // 入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1, // 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则
阅读全文
摘要:// 面试题6:从尾到头打印链表 // 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 // 链表节点定义如下: // struct ListNode // { // int m_nValue; // ListNode* m_pNext; // } 解题思路: 使用std::stac
阅读全文
摘要:// 面试题5:替换空格// 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,// 则输出“We%20are%20happy.”。 解题思路: 简单粗暴的方法就是,从前往后依次扫描,碰到空格就先把空格后边的字符串都后移两个单位,然后把‘ ’依次改写
阅读全文
摘要:// 面试题4:二维数组中的查找// 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按// 照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个// 整数,判断数组中是否含有该整数。 例如一个数组: // 1 2 8 9// 2 4 9 12// 4 7 10
阅读全文
摘要:// 面试题3(一):找出数组中重复的数字// 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,// 也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},/
阅读全文

浙公网安备 33010602011771号