![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习题
程序袁先森
希望能够和大家深入交流技术。本人坚信没有解决不了的问题,只有肯不肯动脑子解决。正在专注于把博客内容给提升上去,希望大家能够多多监督。个人博客还有私货内容请@私聊我。这个网站不让贴,谢谢思密达。
展开
-
leetcode-31 下一个排列
题目原型:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1 解题思路以及代码:class S...原创 2018-12-07 15:18:09 · 87 阅读 · 0 评论 -
LeetCode 856 递归思路详解
题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:() 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。示例 1:输入: "()"输出: 1示例 2:输入: "(())"输出: 2示例 3:输入: "()()"输出: 2示例 4:...原创 2018-12-09 15:02:27 · 212 阅读 · 0 评论 -
LeetCode-27 移除元素->竟然击败了100%用户 (内附vector中erase的使用方法)
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nu...原创 2018-12-10 13:42:33 · 410 阅读 · 0 评论 -
LeetCode_3 两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2018-12-29 12:58:57 · 789 阅读 · 0 评论 -
LeetCode_8 字符串转换整数(atoi) 思想
题目描述 请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余...原创 2019-01-02 11:02:52 · 1487 阅读 · 5 评论 -
leetcode-645 leetcode-442 总结-------“数组”查找重复数系列
引言有些关于数组的题目说难不难,说简单的话也非常不简单,如果稍微在数组操作中加一些限制条件,比如时间复杂度只能是O(n),空间复杂度只能是O(1)或者O(n),那么这样的题就跟数学题和智力题一样很考验人。类似题目leetcode-645 错误的集合;leetcode-442 数组中重复的元素;解题思路:刚开始的时候,我之前都是第一印象是对原来数组进行排序,这样一来数组中的数据假...原创 2019-03-08 12:50:10 · 365 阅读 · 0 评论 -
算法:顺时针旋转90度一个m*m矩阵
要点提示:可以从最外层往最内层进行(跟剥洋葱一样),这样一层一层旋转,最终就可以实现所有的矩阵旋转 如何对一层进行旋转:我们定一个两个参考点:最外层的参考点为(0,0),(m-1,m-1).那么倒数第二外层的参考点就是(1,1),(m-2,m-2),然后能够组成90度的四个点就来回更换数值就可以了 类似的题目:旋转打印输出一个矩阵(类比推理,所有跟矩阵有关的进行固定方式的旋转,输出,都应该...原创 2019-07-04 14:11:20 · 1139 阅读 · 1 评论 -
矩阵的“之"字遍历ZigZag打印
题目描述给一个m*n矩阵,请以“之"字型进行遍历输出,{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }输出结果为:1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16{ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }输出:1 2 5 9 6 3 4 7 10 11 8 ...原创 2019-07-04 18:14:52 · 416 阅读 · 0 评论 -
BFPRT算法:求数组中第k小(大)的元素
BFPRTbfprt算法是用来求数组中第k小的元素的算法,bfprt算法可以在O(n)时间内求出答案。算法思想对于求数组中第k小的元素的问题,我们已经有很好的常规算法了,这个算法在最好的情况下时间复杂度是O(n),但在最坏的情况下是O(n^2)的,其实bfprt算法就是在这个基础上改进的。常规解法我们随机在数组中选择一个数作为划分值(number),然后进行快排的parta...转载 2019-07-20 11:14:32 · 378 阅读 · 0 评论