2016年9月2日

动态规划算法:0/1背包问题 (0/1 Knapsack Problem)

摘要: 一、问题描述 给定一堆物品,其重量是一个一维数组 wt,其对应的价值为另一个一维数组 vals。 给你一个背包,背包容量为w,如何选择物品,使其最后累加的重量不超过背包容量,同时价值最大。(每种重量的物品只有一件) 0/1的意思是,每件物品只有选择或不选择两种状态,而不能拆分物品的重量。 二、状态分 阅读全文

posted @ 2016-09-02 22:49 Traveling_Light_CC 阅读(874) 评论(0) 推荐(0) 编辑

2016年8月15日

动态规划算法:硬币找零(Minimum Coin Change)

摘要: 一、问题描述 给定一组硬币以及需要找零的金额,怎样才能使用最少的硬币数来凑够需要找零的金额。 例如,你现在拥有的硬币数为:2,7,3,找零金额为11。可以选择的找零方式有很多种,比如:3,3,3,2;2,2,2,2,3还可以选择2,2,7。很显然选择2,2,7是使用硬币最少的选择方式。 所以,这里我 阅读全文

posted @ 2016-08-15 12:47 Traveling_Light_CC 阅读(1001) 评论(1) 推荐(0) 编辑

2016年8月3日

链表:按照左右半区的方式重新组合单链表

摘要: 题目: 给定一个单链表的头部节点head,链表长度为N,如果N为偶数,那么前 N/2个节点算作半左区,后N/2个节点算右半区;如果N为奇数,那么前N/2为左半区,后半区N/2+1个节点为右半区。左半区从左向右记为 L1->L2->...,右半区从左到右依次记为 R1->R2->...,则链表调整为 阅读全文

posted @ 2016-08-03 21:34 Traveling_Light_CC 阅读(282) 评论(0) 推荐(0) 编辑

链表:删除链表中倒数第K个节点

摘要: 问题:实现一个函数,可以删除链表中倒数第K个节点。 要求时间复杂度为 O(N),额外空间复杂度为 O(1)。 分析:让链表从头开始走到尾,每移一步,就让 K 值减一,当链表走到结尾时,如果 K 值大于0,说明不用调整链表,因为链表根本没有倒数第 K 个节点,此时将原链表返回即可;如果 K 值等于0, 阅读全文

posted @ 2016-08-03 20:52 Traveling_Light_CC 阅读(307) 评论(0) 推荐(0) 编辑

链表:合并两个有序链表

摘要: 题目: 给定两个有序单链表的头节点 head1 和 head2,请合并两个有序链表,合并后的链表依然有序,并返回合并后的头节点。 例如: 0->2->3->7->null 1->3->5->7->9->null 0->1->2->3->3->5->7->7->9->null 分析: 1. 如果某个链 阅读全文

posted @ 2016-08-03 20:44 Traveling_Light_CC 阅读(1118) 评论(0) 推荐(0) 编辑

链表:删除无序链表中值重复出现的节点

摘要: 题目: 给定一个无序单链表的头结点head,删除值重复出现的节点。 例如:1->2->3->3->4->4->2->1->1->null,删除值重复的节点之后为 1->2->3->4->null。 方法一:利用哈希表。时间复杂度O(N),空间复杂度O(N) 方法二:类似选择排序的过程,比如本题例子中 阅读全文

posted @ 2016-08-03 19:53 Traveling_Light_CC 阅读(220) 评论(0) 推荐(0) 编辑

链表:两链表相交的一系列问题

摘要: 题目: 在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1 和 head2,这两个链表可能相交,也可能不相交。请实现一个函数,如果两个链表相交,请返回相交的第一个节点;如果不相交,返回 null 即可。 要求:如果链表1和2的长度分别为M、N,时间复杂度请达到O(M+N),额外 阅读全文

posted @ 2016-08-03 15:47 Traveling_Light_CC 阅读(164) 评论(0) 推荐(0) 编辑

链表:将单链表按值划分为左边小、中间相等、右边大的形式

摘要: 题目: 给定一个单向链表的头节点 head,节点的值类型是整数,再给定一个整数 pivot。实现一个调整链表的函数,将链表调整为左边部分都是小于 pivot 的节点,中间部分值都是等于 pivot 的节点,右边都是值大于 pivot 的节点。除这个要求外,对调整后的节点顺序没有更多要求。 例如:链表 阅读全文

posted @ 2016-08-03 14:38 Traveling_Light_CC 阅读(487) 评论(0) 推荐(0) 编辑

链表:判断一个链表是否为回文结构

摘要: 题目:给定一个链表头节点 head,请判断链表是否为回文结构 例如: 1-->2-->1,返回 true; 1-->2-->2-->1,返回 true; 15-->6-->15,返回 true; 1-->2-->3,返回 false; 进阶: 如果链表长度为 N,时间复杂度为 O(N),额外空间复杂 阅读全文

posted @ 2016-08-03 11:14 Traveling_Light_CC 阅读(434) 评论(0) 推荐(0) 编辑

链表:约瑟夫环

摘要: 题目: 输入:一个环形单链表的头节点 head 和报数的值 m 返回:最后生存下来的结点,且这个节点自己组成环形单向链表,其他节点都删掉 进阶: 如果链表节点数为 N,想在时间复杂度为 O(N)时完成原问题的要求,该怎么实现? 先看看普通的解法: 1. 如果链表为空或节点数为1,或者m的值小于1,则 阅读全文

posted @ 2016-08-03 10:03 Traveling_Light_CC 阅读(127) 评论(0) 推荐(0) 编辑

导航