- 博客(5)
- 资源 (3)
- 收藏
- 关注
原创 【数据结构与算法】二分查找
二分查找 是logn的查找算法,思路是,只有在low=high的时候才判断是否相等,否则就一分为二,计算左边的结果和右边的结果,返回不是-1的,如果都没找到,返回-1.package main;public class Algorithm { public static int binarySearch(int[] array ,int k){ return search(arra
2016-12-30 08:36:39 293
原创 【算法理论】N NP NPC 问题
算法分析中会把问题分为若干类。P问题:指存在多项式时间解法的问题,比如二分查找NP问题:指存在多项式时间验证的问题,比如独立集问题,是否存在size至少为k的独立集,那么随便给定一个k大小的点集,验证是否为独立集肯定是多项式时间可以完成的。而且在NP中,一般都是针对判定性问题,即把一个optimization的问题转化为decision的问题。也就是说我们要解决一个optimiazatio
2016-12-30 07:47:48 4616
原创 【算法理论】Knapsack(背包)问题
Knapsack(背包)问题Problem:给定n件物品,每一件物品有价值vi和重量wi,给定一个容量为W的箱子,要求用在不超过箱子容量的前提下,装入价值尽可能多的物品。这个问题分为两个版本,一种是fractional,即每件物品是可拆分的,另一种是01类型的,即每件物品要么全拿要么不拿。Fractional版本:这个版本的问题存在得到最优解的贪心算法,属于P问题,即多项式可解。贪
2016-12-30 03:00:49 9158
原创 【leetcode】leetcode 刷题 笔记 (不定期更新)
237.Delete Node in a Linked List题目要求只给定链表中一个节点的前提下,删除该节点。注意这里题目并没有给出对链表的引用,因而我们无法遍历链表得到前驱。有一个思路确实很好,它并不是删除链表的节点,而是把该节点的内容改为下一个节点的内容,把该节点的指针给为下一个节点的指针,相当于复制了下一个节点的内容然后删除下一个节点。思考:这个思路在只有单链表的前提下确实无懈可
2016-12-27 11:55:08 1006
原创 【算法理论】bin packing 装箱问题
Bin packing(装箱问题)Problem:给定n件物品和k个箱子,每一个箱子的容量为1,每一件物品的大小w为(0,1),要求使用最少数目的箱子来装上全部的物品。这个问题是NPC问题,只有approximation(近似)算法。一个2-approximation的多项式算法。算法:先打开一个箱子,然后逐一放入物品,如果当前的物品没有一个已打开的箱子可以放入,那么就新打开一
2016-12-27 11:21:44 28396 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人