算法
文章平均质量分 81
xuqing-ICT
纸上得来终觉浅,绝知此事要躬行。
展开
-
Dynamic Programming:双调旅行商问题(旅行商的变种)的解法
关于TSP问题,毫无疑问它是一个NPC的问题。至今无多项式时间的解法。很有意思的是,有意者定义了一种新的旅行商问题,成为双调旅行商问题,问题描述如下:原创 2014-01-12 14:24:48 · 2936 阅读 · 0 评论 -
permutation 系列
关于permutation的讲解,请参见http://blog.csdn.net/xuqingict/article/details/24840183下列题目的讲解均是基于上面的文章:题1: Next Permutation Total Accepted: 8066 Total Submissions: 32493My Submissions原创 2014-05-02 13:55:59 · 2225 阅读 · 0 评论 -
算法之--数组分割
题目来源:编程之美2.18有一个无序的,元素个数为2n的正整数的数组,要求:如何能把这个数组分割为元素个数为n的两个数组,使得两个子数组的和尽量接近。解析:因为两个子数组的和是一定的,等于整个数组的和。现在要求使得两个字数组的和尽量的接近,也就意味着要从其中选出n个数使得这n个数的和尽可能的接近sum/2,不妨设为从小于sum/2的方向接近。于是,这就是一个01背包的问题:原创 2014-08-07 14:49:45 · 2824 阅读 · 0 评论 -
快速排序 归并排序的非递归版本 备忘
首先,归并排序,分治,递归解决小的范围,再合并两个有序的小范围数组,便得到整个有序的数组。这是很适合用递归来写的,至于非递归,便是从小到大,各个击破,从而使得整个数组有序。代码如下:void merge(vector &A, int left, int mid, int right){ int i=left,j=mid+1; vector tmp(right-left+1,0);原创 2014-08-10 10:33:56 · 1340 阅读 · 0 评论 -
算法 之二分查找的各种版本
关于二分查找,想必大家都非常熟悉了,原创 2014-01-29 11:06:49 · 2376 阅读 · 0 评论 -
算法之 有序链表和平衡二叉树 有序数组与平衡二叉树
题目描述:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.给定一个有序的链表,要求构建一颗平衡二叉查找树。解析:二叉查找树的中序遍历的结构就是一颗二叉查找树,要使得最终的二叉查找树的结构尽可能的平衡,也就是说只需要原创 2014-08-23 21:57:49 · 2313 阅读 · 0 评论 -
算法之 数组的“距离”
Description:给定数组A[0---n-1],找出数组中欧你原创 2014-08-15 17:58:24 · 2941 阅读 · 0 评论 -
算法 之 word break II
写这篇博客的原因是,对于要输出打印所有结果的题目:比如:微软面试100题中的第4题,在二元树中找出和为某一值的所有路径(树)题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如 输入整数 22 和如下二元树10/\5 12/ \47则打印出两条路径:10, 1原创 2014-03-09 17:21:40 · 2432 阅读 · 0 评论 -
算法 之 word break
题目描述:Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, givens = "leetcode",dic原创 2014-01-25 12:10:45 · 1871 阅读 · 0 评论 -
[算法]区间重合判断
题目描述:给定一个源区间 [x,y]和N个无序的目标区间[x1,y1],[x2,y2],...[xn,y,],判断给定的源区间[x,y]在不在目标区间内。例如:给定源区间[1 6]和目标区间[1 2][2 4][4 9]即可认为区间[1 6]在目标区间内,因为源区间的并集为[1 9 ].试想一下,现在在这样的一个目标区间的集合, 需要频繁地去查询一个区间是否在该集合中。那么怎么样才原创 2014-09-01 21:12:06 · 6559 阅读 · 0 评论 -
最长回文子串的不同解法
给定一个字符串,返回该字符串的最长回文子串,回文yejius原创 2014-10-01 18:50:00 · 1214 阅读 · 0 评论 -
Validate binary search tree
关于这道题目,不得不感慨leetcode真的是一个不错的网站,之前的代码是有bug的,当时AC了,现在测试用例更加完善了,于是不能AC了。题目描述:Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The le原创 2014-11-16 22:31:58 · 1366 阅读 · 0 评论 -
算法 -- 计算逆序数 , significant逆序数 归并排序
求解逆序数是归并排序的副产品。这学期见过很多版本的逆序数,大多数的版本都曲解了“significant逆序数”(后面称为显著逆序数),也就是说:if i k*A[j], (1 那么再看其数值大的程度,就可以决定是否是“显著逆序数”。我实现了下面的版本,注释中讲解的是我在编写程序时遇到的问题://此处使用的归并排序是采用的不使用哨兵元素的形式。//如果i 3*A[j]时才原创 2014-02-23 16:43:29 · 2174 阅读 · 0 评论 -
算法之找出数组中出现次数大于n/m的元素
最经典的题目莫过于是: 在一个数组中找出出现次数超原创 2014-10-20 21:02:43 · 4088 阅读 · 1 评论 -
Max Points in a line[修改]
题目描述:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.分析:点是否共线,从斜率入手。注意:在提交的过程中,我发现,如果给定的n个点中有重复的点,也是当做不同的点来计算的。例如:如果所有的n个点一样的话,那么共线的点的个数就原创 2014-02-05 14:09:45 · 1525 阅读 · 0 评论 -
硬币面值问题
有趣的硬币识别~~~原创 2014-04-21 14:13:02 · 1879 阅读 · 0 评论 -
interleaving string
题目描述:Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.For example,Given:s1 = "aabcc",s2 = "dbbca",When s3 = "aadbbcbcac", return true.When s3 = "aad原创 2014-07-09 22:14:58 · 957 阅读 · 0 评论 -
分治 Divide and Conquer 局部最小值 local optimal 棋盘问题
问题描述:Suppose now that you're given an n × n grid graph $G$. (An n × n graph is just the adjacency graph of an $n \times n$ chessboard. To be completely precise, it is a graph whose node set is the原创 2013-11-05 21:15:13 · 8693 阅读 · 10 评论 -
[转]背包问题九讲
P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max转载 2014-01-25 12:09:36 · 1301 阅读 · 0 评论 -
层次遍历 二叉树
对于二叉树的层次遍历,本人实现了递归版本与非递归的版本。要求对于给定的二叉树, 输出的结果为[ [ 1 ] , [ 2 , 3 ] , [4 , 5 ] ] 注意:只需要将各个层之间的界限确定清楚就好了。迭代版本:(使用队列,利用空指针作为层与层之间分隔的标记)。/** * Definition for binary tree * struct原创 2014-02-06 16:24:30 · 1248 阅读 · 1 评论 -
[算法]二叉树的遍历:前序,中序与后序
二叉树的遍历是二叉树的众多算法的基础。主要有,前序,中序与后序。原创 2014-02-11 22:48:43 · 9187 阅读 · 1 评论 -
Gas Station
问题描述:There are N gas stations along a circular route, where the amount of gas at station i is gas[i].You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from stat原创 2014-01-28 13:17:13 · 1275 阅读 · 0 评论 -
Flatten Binary Tree to Linked List
题目描述:Given a binary tree, flatten it to a linked list in-place.For example,Given 1 / \ 2 5 / \ \ 3 4 6The flattened tree should look like原创 2014-01-25 21:45:50 · 947 阅读 · 0 评论 -
数组中删除元素
Given an array and a value, remove all instances of that value in place and return the new length.The order of elements can be changed. It doesn't matter what you leave beyond the new length.分析题意:原创 2013-12-05 22:38:12 · 1934 阅读 · 4 评论 -
Longest Common Prefix
题目描述:Write a function to find the longest common prefix string amongst an array of strings.很简单的一道题目,但是我写了两个不一样的版本,运行时间确实数倍之差。。贴代码如下:版本1:class Solution {public: string longestCommonPref原创 2014-06-09 21:06:19 · 1013 阅读 · 0 评论 -
3 sum
3-sum 题目描述:Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.题目要求:Elements原创 2014-06-01 11:46:00 · 2057 阅读 · 1 评论 -
jump game
之所以说leetcode的测试用例有问题,是因为我刚开始理解错了题意,写下了如下的错误的代码。但是却AC了。错误代码为: bool canJump(int A[], int n) { if(n == 0) return true; int sum = 0; //记录当前的最远距离 int i = 0;原创 2014-05-22 21:26:09 · 983 阅读 · 0 评论 -
二叉查找树——Validate Binary Search Tree
Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the node's key.Th原创 2014-02-23 17:28:26 · 1252 阅读 · 0 评论 -
ReOrder list 链表 重排序
关于单链表的题目,最重要的便是指针的操作。我近期涉及到的单链表的题目对我最大的感想就是:无论是对单链表的任何操作,一个单链表的标识便是它的头指针。所以很多的操作无非就是一个“新”的头节点带领着一列元素罢了。对于上述的题目,可能刚开始的时候会无从下手,至少我是这样,我在考虑怎样将Ln移动到L1之后,怎样得到Ln-1的指针呢。其实分开来看,无非就是两个链表的merge, L = L0 , L1 ,原创 2014-01-12 15:33:22 · 963 阅读 · 0 评论 -
BFS——surrounded region
Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.For example,X X X XX O O X原创 2014-04-24 22:56:22 · 1394 阅读 · 1 评论 -
字符串匹配 之 KMP详解
最近看了算法导论的KMP算法的介绍,笔者实现了该算法,并大致懂得了该算法的思想。现大致总结如下:字符串匹配:即是在一个目标串中寻找某一个模式出现的位置:例如:在目标串 S = “ababababca” 中寻找模式串P = “ab”。返回“ab”的位移为0,2,4,6。传统的做法:原创 2014-02-16 16:17:27 · 1141 阅读 · 0 评论 -
项目中的有趣题目 -- 吃饺子问题
题目描述:近日,项目中偶遇一个有趣的题目,感慨多多,备忘之。抽象出来,大致是:桌上一共有100个饺子,其中有10个饺子包了硬币,问:连续吃到硬币的期望次数是多少次?首先,定义一下这里的连续,如果我们将吃饺子的顺序抽象为一个100位的二进制数。并且吃到饺子表示为1,没吃到则为0,那么:如果一次和第二次吃到,那么可表示为: 110.....,那么这里的连续吃到的次数为1.如果数原创 2014-12-27 11:32:20 · 3462 阅读 · 0 评论