摘要:问题:给定一个无序数组,这个数组中只包含0,1,2三种数字,对这个数组进行排序。 解题思路:要充分利用题给的条件:只含有0或1或2可以这样想:0应该往前放,1应该不变,2应该往后扔。 定义三个变量begin指向首下标,end指向尾下标,current最开始指向首下标。 当current对应数组值是0
阅读全文
摘要:基本思想 本文以从小到大排序的方式进行讲解。 快速排序的基本思想是任取待排序序列的一个元素作为中心元素(可以用第一个,最后一个,中间的任意一个),称之为枢轴元素,pivot。 1)将数组中所有比pivot小的放左边; 2)将数组中所有比pivot大的放右边; 3)形成左右两个子表 4)然后对左右两个
阅读全文
摘要:一只青蛙一次可以跳上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) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加
阅读全文
摘要:题目:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1
阅读全文
摘要:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0)
阅读全文
摘要:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路: 考虑遍历链表,并在访问各节点时修改 next 引用指向package Algriothm; public cl
阅读全文
摘要:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例1: 输入: ["CQueue","appendTail","delet
阅读全文
摘要:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: 输入:head = [1,3,2] 输出:[2,3,1] 解题思路: 首先这个链表的长度第一时间无法确认,所以无法直接使用下标的方式创建数组 其次需要从尾到头反过来输出数组,想到使用栈的【先入后出】的特点,所以使用栈作为中
阅读全文
摘要:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例: 输入:s = "We are happy." 输出:"We%20are%20happy." 解题思路: 字符串由字符组成,首先将字符串转化成字符数组,然后遍历字符数组。 如果需要将空格替换成其他字符串,就不能使用数组的下标直接替换
阅读全文