摘要:
题目描述: 给定两个有序数组arr1和arr2,在给定一个整数k,返回两个数组的所有数中第K小的数。 例如: arr1 = {1,2,3,4,5}; arr2 = {3,4,5}; K = 1; 因为1为所有数中最小的,所以返回1; arr1 =... 阅读全文
摘要:
题目描述: 给定两个有序数组arr1和arr2,两个数组长度都为N,求两个数组中所有数的上中位数。 例如: arr1 = {1,2,3,4}; arr2 = {3,4,5,6}; 一共8个数则上中位数是第4个数,所以返回3。 arr1 = {0,1,2}... 阅读全文
摘要:
题目描述: 给定一棵完全二叉树的头节点head,返回这棵树的节点个数。 如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。 1 /* 2 思路: 其实也是一种二分的思路。 3 因为是完全二叉树,所以可以分为根结点的左右子树计算节点个数。 4 ... 阅读全文
摘要:
题目描述: 给定一个double类型的数组arr,其中的元素可正可负可0, 返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1], 子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。 1 /* 2 思路: 3 因为每个... 阅读全文
摘要:
题目描述: 定义局部最小的概念。 arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0] 1,首先分别判断arr[0]和arr[len-1]是否为局部最小值,若是则返回位置。 5 若不是,则1~len-2区间必然有一个是局部最小值。 6 ... 阅读全文
摘要:
题目描述: 给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K], 右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。 求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少? 给定整数数组A和数组的大小n... 阅读全文
摘要:
题目描述: 对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。 给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2,6,7],7 返回:4 1 /* 2 这个题在牛客网上的讲解我感觉是有点问题的, 3 ... 阅读全文
摘要:
1 /* 2 题目描述: 3 对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边, 4 将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。 5 测试样例: 6 "... 阅读全文
摘要:
1 /*2 题目描述:3 对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。4 给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。5 测试样例:6 [[1,2,3],[... 阅读全文
摘要:
1 /* 2 题目描述: 3 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 4 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。 5 测试样例: 6 [[1,2,... 阅读全文
摘要:
1 /* 2 题目描述: 3 对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。 4 给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。 5 测试样例: 6 [... 阅读全文
摘要:
1 /* 2 题目描述: 3 请把纸条竖着放在桌子上,然后从纸条的下边向上方对折,压出折痕后再展开。此时有1条折痕, 4 突起的方向指向纸条的背面,这条折痕叫做“下”折痕 ;突起的方向指向纸条正面的折痕叫做“上”折痕。 5 如果每次都从下边向... 阅读全文