给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:
设计一种方法,将一个字符串中的所有空格替换成 %20。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。
题目 描述 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 样例 比如 n = 15, 返回一个字符串数组: [ "1", "2", "fizz", "4", "buzz", "fizz", "7", "8", "fizz", "buzz", "11", "fizz", "13", "14", "fizz buzz" ] 解答 思路 代码 clas
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。 该数字按照大小进行排列,最大的数在列表的最前面。
设计一个算法,找出只含素因子2,3,5 的第 n 大的数。 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...
所有乘数因子中,2*5出现一个0,2管够,所以只需要统计因子中有多少5。 每五个数出现一个5,每五个(五个数)多出现一个5…… 对于n!,有n/5个一个五,n/5/5个多出现一个5……
题目 给定一个含不同整数的集合,返回其所有的子集 注意事项 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 样例 如果 S = [1,2,3],有如下的解: Paste_Image.pn
给一个数组 nums 写一个函数将0 移动到数组的最后面,非零元素保持原数组的顺序
题目大意:一条直线上有n个石头,一个人从左往右走,碰到奇数块石头(碰到一块石头数一个数,这里指数的数是奇数),就往右扔,碰到偶数的石头就不管他,如果两块石头在同一个位置,就扔大的那块(能扔的距离小的)。问最后最远的那块石头的位置。
给出一个整数数组,堆化操作就是把它变成一个最小堆数组。 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。 说明 什么是堆? 堆是一种数据结构,它通常有三种方法:push, pop 和 top。其中,“push”添加新的元素进入堆,“pop”删除堆中最小/最大元素,“top”返回堆中最小/最大元素。 什么是堆化? 把一个无序整数数组变成一个堆数组。如果是最小堆,每个元素A[i],我们将得到A[i *
题目 给出一个具有重复数字的列表,找出列表所有不同的排列。 样例 给出列表 [1,2,2],不同的排列有: Paste_Image.png 代码 class Solution { /**
从空集开始,每个整数和所有子集组成的集合中的各子集都能组成新的子集。 根据注意事项,整数加入子集之后需要进行排序。
有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法。判定 T2 是否为 T1的子树。
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
函数接口如下: bool isMatch(const char *s, const char *p)
有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。 机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。 问有多少条不同的路径?
工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory 来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。
样例 给定链表 1->4->3->2->5->2->null,并且 x=3 返回** 1->2->2->4->3->5->null**
单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。
给出数组 [1,2,3,4,5],第一大的元素是 5,第二大的元素是 4,第三大的元素是 3,以此类推
队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。
写一个程序来检测一个整数是不是丑数。 丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。
在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如: hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) 33 + ascii(d)) % HASH_SIZE = (97 333 + 98 * 332 + 99 * 33 +100) % HASH_SIZE = 3595978 % HASH_SIZE 其中HASH_SIZE表示哈希表的大小(可以假设一个哈希表就是一个索引0 ~ HASH_SIZE-1的数组)。 给出一个字符串作为key和一个哈希表的大小,返回这个字符串的哈希值。
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。
相加的过程如下:3 + 8 = 11,1 + 1 = 2。因为 2 只剩下一个数字,所以返回 2。
题目 描述 实现一个矩阵类Rectangle,包含如下的一些成员变量与函数: 两个共有的成员变量 width 和 height 分别代表宽度和高度。 一个构造函数,接受2个参数 width 和 height 来设定矩阵的宽度和高度。 一个成员函数 getArea,返回这个矩阵的面积。 样例 Rectangle rec = new Rectangle(3, 4); rec.getArea(); // should get 12 解答 太简单了。不多说 代码: public class Rectangle {
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
给出一个无重叠的按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
题目 给出若干闭合区间,合并所有重叠的部分。 样例 给出的区间列表 => 合并后的区间列表: merge.PNG 代码 /** * Definition of Interval: * publi
这里有n个房子在一列直线上,现在我们需要给房屋染色,分别有红色蓝色和绿色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小。
给定两个整数数组(第一个是数组 A,第二个是数组 B),在数组 A 中取 A[i],数组 B 中取 B[j],A[i] 和 B[j]两者的差越小越好(|A[i] - B[j]|)。返回最小差。
添加的时候排除掉相同的元素即可,回溯法我们经常会设置一个已访问标识数组,来表示数组被访问过,但这里不用这样,因为如果list里面已经包含就说明已经访问过了,所以只要判断,跳过已有的元素即可。 再考虑递归的结束条件,当元素都添加足够就结束了,添加足够的意思就是,元素个数等于数组的长度。
将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
有两个不同大小的二进制树: T1有上百万的节点; T2有好几百的节点。请设计一种算法,判定 T2是否为 T1的子树。
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
---- 整数排序 II 题解集合 归并排序 归并排序迭代版本 快速排序 ---- 归并排序 不懂归并排序的看这篇文章 class Solution { public: //合并两个有序子序列 void merge(vector<int>& A,int begin,int mid,int end,vector<int>& temp) { //第一个子序列起点和第二个子序列起点,以及temp数组起点 int i = begin, j = mid + 1, k = 0; while (i
单词可以由按顺序的相邻单元的字母组成,其中相邻单元指的是水平或者垂直方向相邻。每个单元中的字母最多只能使用一次。
给出两个整数a和b, 求他们的和, 但不能使用+等数学运算符。 ** 注意事项 ** ** 你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。 ** 说明 a和b都是32位整数么? 是的
样例 在词典 { "dog", "google", "facebook", "internationalization", "blabla"}中, 最长的单词集合为 ["internationalization"]
给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。 样例 例如,排列 [1,2,4]是第 1个排列。
给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大?
样例 给出链表1->2->3->4->5->null和k=2 返回4->5->1->2->3->null
样例 给出链表 1->2->3->4->null,重新排列后为1->4->2->3->null。
题目 给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 注意事项 假设给出的两个节点都在树中存在 样例 对于下面这棵二叉树 4 / 3 7 / 5 6 LCA(3, 5) = 4 LCA(5, 6) = 7 LCA(6, 7) = 7 代码 /** * Definition of TreeNode: * public class TreeNode { * public int val; * pub
领取专属 10元无门槛券
手把手带您无忧上云