
算法
昨日的桥
这个作者很懒,什么都没留下…
展开
-
如何提高ACM竞赛编写代码的速度
摘自上海交大bbs:奋是基础,一切的前提奋之上是忍耐大部分时候大部分人的“习惯”都是跟“效率”作对的奋让你有机会去跟这些习惯做斗争在 ACM 竞赛的级别,写代码不是在解题,而是实现早已在脑子里准备好的一个逻辑流程。这个追求跟大部分没有训练过的人的习惯相反,要扭转这种习惯,第一步可以做尝试有:把准备和敲键盘分割为两个动作。把敲键盘和运行分割为两个动作。编译错误这件事情几乎总是会发...转载 2020-03-31 22:08:14 · 447 阅读 · 0 评论 -
利用递归来实现字符串反转
字符串反转有很多方法,查找了网上的一些资料然后进行核对比较,其中应该属StringBuffer的reverse()是最轻松的,几乎一步搞定。但是,如果从提升程序性能的角度来看,比较好的方法应该是采用递归来实现。面试时手撕代码算法,其实并不只是在考察你的代码是否可以解决问题,而是你的代码是否是最优的,是否用到一些比较优秀的思想。最优的代码才是标准答案。代码//反转字符串 public sta...原创 2020-03-04 23:30:58 · 1452 阅读 · 0 评论 -
【算法题】下一个排列
一、题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1二、思路找到nums[i - 1] < ...原创 2019-12-30 23:55:03 · 226 阅读 · 0 评论 -
【算法题】实现 strStr()
一、题目给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2 示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -...原创 2019-12-26 23:03:24 · 149 阅读 · 0 评论 -
【算法题】移除元素
一、题目给定一个数组 nums 和一个值 val ,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。二、思路使用双指针。指针 j 用来遍历数组中的每一个元素,用指针 i 将不等于 val 的数组元素保存在原数组...原创 2019-12-26 21:43:29 · 179 阅读 · 0 评论 -
【算法题】两两交换链表中的节点
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路参数非空判断。头结点为空,则反空。头结点后继结点为空,则反头结点。使用递归。输入为头结点及其两个后继结点,输出为头结点。终止函数:判断两个后继结...原创 2019-12-25 15:16:23 · 200 阅读 · 0 评论 -
【算法题】合并K个排序链表
一、题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出:1->1->2->3->4->4->5->6二、思路非空判断。二层递归。第一层,对list[]集合进行递归,实现遍历。第二层,对任意两个ListNode...原创 2019-12-25 12:44:27 · 171 阅读 · 0 评论 -
【算法题】合并两个有序链表
一、题目将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入: 1->2->4, 1->3->4输出: 1->1->2->3->4->4二、思路参数非空判断。在进行合并之前要对参数进行非空判断,主要分为以下三种情况:1、l1为空切l2为空;2、l1为空而l2不为空;3、l1不为...原创 2019-12-23 21:55:04 · 236 阅读 · 0 评论 -
【算法题】有效的括号
一、题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 ...原创 2019-12-22 22:55:37 · 189 阅读 · 0 评论 -
【算法题】删除链表的倒数第N个节点
题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路定义两个节点nl和nr,初始值都是头结点,nr向右移动n次,然后n...原创 2019-12-22 20:13:36 · 107 阅读 · 0 评论 -
【算法题】四数之和
题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:...原创 2019-12-21 23:24:09 · 321 阅读 · 0 评论 -
【算法题】电话号码的字母组合
题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例输入: “23”输出: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。思路首先,要对输入做非空...原创 2019-12-21 21:05:03 · 264 阅读 · 0 评论