随笔分类 - 算法
记录自己刷剑指offer、Leetcode以及自己碰到的一些算法的心得
摘要:算法:一个数组中所有元素的最小公倍数 这个我搜索了一下网上的解答,发现答案基本类似,但是都有问题,测试案例[2,3,4]均是返回24,应当返回12才对。 这里我贴出自己修改后的代码
阅读全文
摘要:本文记录自己刷剑指 offer 67 道算法题的心得 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 js function rep
阅读全文
摘要:减绳子 问题描述: 给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段(m、n 都是整数,n 1 并且 m 1),每段绳子的长度记为 k[0],k[1],...,k[m]。请问 k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、
阅读全文
摘要:1.矩阵中的路径 问题描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a s a b f d
阅读全文
摘要:把字符串转换成整数 问题描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为 0 或者字符串不是一个合法的数值则返回 0 输入描述:输入一个字符串,包括数字字母符号,可以为空 输出描述:如果是合法的数值表达则返回该数字,否则返回 0 输入 +2147483647 1a33
阅读全文
摘要:1.求 1+2+3+...+n 问题描述: 求 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句(A?B:C)。 方法一: 方法二:递归 + 短路原理 2.不用加减乘除做加法 问题描述: 写一个函数,求两个整数之和,要求在
阅读全文
摘要:1.扑克牌顺子 问题描述: LL 今天心情特别好,因为他去买了一副扑克牌,发现里面居然有 2 个大王,2 个小王(一副牌原本是 54 张^\_^)...他随机从中抽出了 5 张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心 A,黑桃 3,小王,大王,方片
阅读全文
摘要:1.数字在排序数组中出现的次数 问题描述: 统计一个数字在排序数组中出现的次数。 2.二叉树的深度 问题描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 3.平衡二叉树 问题描述: 输入一棵二叉树,判断该二叉树是否是平衡
阅读全文
摘要:1.丑数 问题描述: 把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含质因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。 解题思路: 首先从丑数的定义我们知道,一个丑数的因子只有 2,3,5
阅读全文
摘要:1.数组中出现次数超过一半的数字 问题描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为 9 的数组[1,2,3,2,2,2,5,4,2]。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。如果不存在则输出 0。 2.最小的 K 个数 问题
阅读全文
摘要:1.复杂链表的复制 问题描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路: 按照正常的思路,首先从头到尾遍历链表,
阅读全文
摘要:1.包含 min 函数的栈 问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数(时间复杂度应为 O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用 pop()或者 min()或者 top()方法。 js function IsPopOrder(push
阅读全文
摘要:顺时针打印矩阵 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下 4 X 4 矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,1
阅读全文
摘要:二叉树的镜像 操作给定的二叉树,将其变换为源二叉树的镜像。
阅读全文
摘要:1.链表中倒数第 k 个结点 问题描述: 输入一个链表,输出该链表中倒数第 k 个结点。 解题思路 1: 因为要求链表倒数第 k 个节点,也就是求正数第 length k 个节点。整体过程如下: 链表又是个单链表,并且没有保存长度信息。所以需要循环一次计算 length。 第二次循环找到第 leng
阅读全文
摘要:1.数值的整数次方 问题描述: 给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。保证 base 和 exponent 不同时为 0. 2.调整数组顺序使奇数位于偶数前面 问题描述: 输入一个整数数组,实现一个函数来调
阅读全文
摘要:二进制中 1 的个数 问题描述: 输入一个整数,输出该数二进制表示中 1 的个数。其中负数用补码表示。 解题思路: 如果一个整数不为 0,那么这个整数至少有一位是 1。如果我们把这个整数减 1,那么原来处在整数最右边的 1 就会变为 0,原来在 1 后面的所有的 0 都会变成 1(如果最右边的 1
阅读全文
摘要:1.斐波那契数列 问题描述: 大家都知道斐波那契数列,现在要求输入一个整数 n,请你输出斐波那契数列的第 n 项(从 0 开始,第 0 项为 0)。(n 方法一: js function Fibonacci(n) { // write code here if (n == 0 || n == 1)
阅读全文
摘要:旋转数组的最小数字 问题描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为 1。 NOTE:给出的所有元素都大于 0,若数组大小为
阅读全文
摘要:1.用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 队列中的元素为 int 类型。 2.滑动窗口的最大值 输入描述: 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小 3
阅读全文

浙公网安备 33010602011771号