随笔分类 -  算法实战

基于leetCode真实题型进行记录练习,并描述自己的解题思路
算法练习(八):三色排序问题
摘要:问题:给定一个无序数组,这个数组中只包含0,1,2三种数字,对这个数组进行排序。 解题思路:要充分利用题给的条件:只含有0或1或2可以这样想:0应该往前放,1应该不变,2应该往后扔。 定义三个变量begin指向首下标,end指向尾下标,current最开始指向首下标。 当current对应数组值是0 阅读全文

posted @ 2021-08-31 17:26 yssd 阅读(253) 评论(0) 推荐(0)

快速排序算法
摘要:基本思想 本文以从小到大排序的方式进行讲解。 快速排序的基本思想是任取待排序序列的一个元素作为中心元素(可以用第一个,最后一个,中间的任意一个),称之为枢轴元素,pivot。 1)将数组中所有比pivot小的放左边; 2)将数组中所有比pivot大的放右边; 3)形成左右两个子表 4)然后对左右两个 阅读全文

posted @ 2021-08-28 15:43 yssd 阅读(1014) 评论(0) 推荐(0)

算法练习(八):青蛙跳台阶问题
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 示例 3: 输 阅读全文

posted @ 2021-08-25 20:59 yssd 阅读(363) 评论(0) 推荐(0)

算法练习(七):斐波那契数列
摘要:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加 阅读全文

posted @ 2021-08-24 16:17 yssd 阅读(294) 评论(0) 推荐(0)

算法练习(六):滑动窗口的最大值
摘要:题目:给定一个数组 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 阅读全文

posted @ 2021-08-24 10:55 yssd 阅读(101) 评论(0) 推荐(0)

算法练习(五):包含 min 函数的栈
摘要:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0) 阅读全文

posted @ 2021-08-23 19:58 yssd 阅读(48) 评论(0) 推荐(0)

算法练习(四):反转链表
摘要:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解题思路: 考虑遍历链表,并在访问各节点时修改 next 引用指向package Algriothm; public cl 阅读全文

posted @ 2021-08-18 16:29 yssd 阅读(47) 评论(0) 推荐(0)

算法练习(三):用两个栈实现队列
摘要:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例1: 输入: ["CQueue","appendTail","delet 阅读全文

posted @ 2021-08-18 10:36 yssd 阅读(54) 评论(0) 推荐(0)

算法练习(二):从尾到头打印链表
摘要:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: 输入:head = [1,3,2] 输出:[2,3,1] 解题思路: 首先这个链表的长度第一时间无法确认,所以无法直接使用下标的方式创建数组 其次需要从尾到头反过来输出数组,想到使用栈的【先入后出】的特点,所以使用栈作为中 阅读全文

posted @ 2021-08-17 19:53 yssd 阅读(35) 评论(0) 推荐(0)

算法练习(一):替换空格
摘要:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例: 输入:s = "We are happy." 输出:"We%20are%20happy." 解题思路: 字符串由字符组成,首先将字符串转化成字符数组,然后遍历字符数组。 如果需要将空格替换成其他字符串,就不能使用数组的下标直接替换 阅读全文

posted @ 2021-08-17 19:23 yssd 阅读(75) 评论(0) 推荐(0)

导航