随笔分类 - 算法题目
摘要:一、剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个
阅读全文
摘要:一、题目: 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入:x = 2.00000, n = 10输出:1024.00000示例 2: 输入:x = 2.10000, n = 3输出:9.26100示例 3: 输入:x
阅读全文
摘要:一、题目: 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三
阅读全文
摘要:一、题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组
阅读全文
摘要:一、题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2输出:2示例 2: 输入:n = 7输出:21示例 3:
阅读全文
摘要:一、题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两
阅读全文
摘要:一、题目: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入:["CQueue","appendTail",
阅读全文
摘要:1.题目: 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,nu
阅读全文
摘要:1.题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入:head = [1,3,2]输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 2.分析与代码: 方法一:递归 (1)用递归将链表中的数据一个一个放入tmp数组,因为是递归,所以tmp
阅读全文
摘要:1.题目: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy."输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 2.分析与代码: 方法一:遍历法 (1)初始化一个StringBuilder
阅读全文
摘要:1.题目: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8
阅读全文
摘要:1.题目: 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3
阅读全文
摘要:1.题目: 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 示例 1: 输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+
阅读全文
摘要:1. 题目 输入样例:52 6 4 10 20 输出样例:10 2. 分析: 考的就是等差数列的知识,要让包含几个数的数列最短,那肯定是间隔公差大点,包含的数就少点。 下面每个数与第一个数的间隔为2、4、8、18,求这几个数的最大公约数,即公差。求最大公约数用欧几里得算法(辗转相除法) 项数n =
阅读全文
摘要:1. 题目: 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方。 010000 000100 001001 110000 迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。 对于上面的迷宫,从入口开始,可以按DRRU
阅读全文
摘要:#include <iostream> using namespace std; typedef long long ll; //题目最小最大值为10^5,int的范围是-2^9到2^9,所以不能用int int main() { int n; cin >> n; ll a[100010]; for
阅读全文
摘要:直接暴力枚举 #include <iostream> using namespace std; bool check(int i) { while (i) { if (i % 10 == 2 || i % 10 == 0 || i % 10 == 1 || i % 10 == 9) return t
阅读全文
摘要:答案:BYQ 只要发现这种一个个排序求值的,都可以考虑是十进制转R进制。(题目是十进制转26进制,除26取余) #include <iostream> using namespace std; int main() { //十进制转26进制 // cout << 26 * 26 * 2 + 26 *
阅读全文
摘要:答案:40785 #include <iostream> using namespace std; bool check(int i) { int x; while (i) { x = i % 10; if (x == 2 || x == 4) return false; i /= 10; } re
阅读全文
摘要:进制转换: 1. 十六进制与二进制相互转化 十六进制的每一位占二进制中的四位,因此需要先定义十六进制从0~F的二进制值,即: string a[16] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000",
阅读全文