自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 算法概论习题8.8

在精确的4SAT(EXACT 4SAT)问题中,输入为一组子句,每个子句都是恰好4个文字的析取,且每个变量最多在每个子句中出现一次。目标是求它的满足赋值——如果该赋值存在。证明精确的4SAT是NP-完全问题。显然,4SAT问题是NP问题,所有可能的赋值总数的指数级的。现从3SAT归约到4SAT来证明4SAT为NP_完全问题:给定3SAT的实例,对I中的任意子句(a1∨a

2017-07-05 15:36:41 203

原创 leetcode 11

贪心法,每个容器的面积取决于最短的木板,时间复杂度o(n),空间复杂度o(1)class Solution {public:int maxArea(vector &height) {int start = 0;int end = height.size() - 1;int result = INT_MIN;while (start int area = min(he

2017-06-28 18:40:43 205

原创 leetcode 120

设状态为 f(i,j),表示从位置 (i, j)出发,路径的最小和,则转移方程为    f(i, j) = min {f(i + 1, j); f(i + 1, j + 1)}+ (i, j)class Solution {public:int minimumTotal (vector>& triangle) {for (int i = triangle.size() -

2017-06-28 18:31:38 193

原创 leetcode 50

二分法,xn = xn/2 * x n/2 *  xn%2class Solution {public:double myPow(double x, int n) {if (n else return power(x, n);}private:double power(double x, int n) {if (n == 0) return 1;doubl

2017-06-28 18:30:34 229

原创 leetcode 78

思路:每个元素都有两种选择,选或者不选,构造增量,然后深度搜索,时间复杂度O(2^n)空间复杂度 O(n)class Solution {public:vector > subsets(vector &S) {sort(S.begin(), S.end()); vector > result;vector path;subsets(S, path, 0, result)

2017-06-28 18:24:36 167

原创 leetcode 73

O(m + n)空间方法:设置两个bool 数组,记录每行和每列是否存在0。要想常数空间,可以复用第一行第一列。’class Solution {public:void setZeroes(vector > &matrix) {const size_t m = matrix.size();const size_t n = matrix[0].size();bool ro

2017-06-22 15:34:01 238

原创 leetcode128

找到数列中最长的连续序列。思路:用一个哈希表unordered_map used记录每个元素是否使用,对每个元素,以该元素为中心,往左右扩张,直到不连续为止,挤下最长长度。代码:class Solution {public:int longestConsecutive(const vector &nums) {unordered_map used;for (auto i :

2017-06-22 15:27:18 260

原创 leetcode 15

三数相加得一数,分析:先排序然后左右夹逼,复杂度O(n2)。代码:class Solution {public:vector> threeSum(vector& nums) {vector> result;if (nums.size() sort(nums.begin(), nums.end());const int target = 0;auto last =

2017-06-22 15:22:51 185

原创 leetcode 81

Remove Duplicates from Sorted Array II :本题是删除有序数组中重复超过三次的数组,因为是有序数组,所以加一个变量记录重复次数即可解决。class Solution {public:    int removeDuplicates(vector& nums) {        if (nums.size()            

2017-06-06 21:39:15 205

原创 leetcode 33

从循环排序的数组中搜索一个数:思路二分查找,如果nums[first]class Solution {public:    int search(vector& nums, int target) {        int first = 0 , last = nums.size();                while(first!=last){   

2017-06-06 14:53:20 243

原创 leetcode 144

Binary Tree Preorder Traversal:使用栈实现class Solution {public:vector preorderTraversal(TreeNode *root) {vector result;stack s;if (root != nullptr) s.push(root);while (!s.empty()) {const T

2017-06-04 21:49:26 144

原创 leetcode 29

题意: 不用乘法和除法,以及取余,实现两个数的除法。如果溢出返回MAX_INT思路:让除数以2倍关系递增,然后直到刚好超过被除数,在递增过程中保存除数递增的每个结果到一个数组里,并且保存刚好超过时的数组下标Max,数组的下标i就代表着这是2的i次方个除数,那么从遍历Max-0,累加,如果累加中某一个和值大于了被除数,不加这个数,继续下一个,不大于则加上,为了无限靠近。因为我们都知道2^1 +

2017-05-15 18:47:20 272

原创 leetcode 345

题目要求:写一个函数要求反转string字符串中的元音字母实现思路:可以设置一个与输入字符串长度相等的整型数组num[s.size()],用来存储元音字母出现的位置,如“hello”中num[0]=1,num[1]=4,num数组中存储的元素个数就是string                       字符串中的元音字母的个数。然后将num数组中所存储的值对应的字符串中的字符反转。

2017-04-30 11:11:23 198

原创 Leetcode 101

本题是确定一个树是不是左右对称的;分析:递归,保存左右两个节点,然后判断leftNode->left和rightNode->right,以及leftNode->right和rightNode->left。如此不断递归代码:/** * Definition for a binary tree node. * struct TreeNode { *     int val; *

2017-04-16 23:30:10 185

原创 leetcode 494

该题目大意是给一个非负的整数数组,可以在每个元素前面加+或者-,给一个目标整数S,求问有多少种不同的添加方式,可以让数组中所有元素在添加符号之后相加的结果为S~分析:深度优先搜索,尝试每次添加+或者-,当当前添加符号次数为nums数组的大小的时候,判断sum与S是否相等,如果相等就res++。sum为当前添加符号情况下的前面所有部分的总和~class Solution {public:

2017-04-09 17:12:14 348

原创 leetcode 2 Add Two Numbers

本题是要求把两个链表中的数字一一相加形成一个新的链表,关键在于两个链表可能不一样长,这时可以将短的那个链表剩余的数值全看成0。具体代码如下:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {    ListNode *head = NULL, *prev = NULL;    int carry = 0;    while (

2017-03-19 20:38:22 130

原创 Leetcode 515

寻找一棵树每层最大的数,思路用广度优先搜索 BFS。用一个队列实现,每次用curLen记录当前层的节点个数,然后依次取出,维护一个最大值,同时将此节点左右子节点也存到队尾。直到一层所有节点全部计数完毕,然后存到向量中,再进行下一层的统计。/**  * Definition for a binary tree node.  * struct TreeNode {  *     int

2017-03-12 22:15:54 299

原创 Leetcode 60 Permutation Sequence

本题是要将1-9的n个数按从小到大全排,找到其中第k个序列。思路:从最高位开始,固定最高位后面的数都有(n-1)!种排列组合,与k比较大小既可以确定第一位数,固定第二位数后面有(n-2)!中排列组合,按此规律即可确定第k个序列class Solution {public: string getPermutation(int n, int k) { string

2017-03-05 20:17:30 152

原创 leetcode 477解答

求Hamming距离综合,Hamming距离ji两个二进制数不相同位的个数的总和例如:二进制表示中,2是0010,4是0100,14是1110,则HammingDistance(2,4) + HammingDistance(2,14) + HammingDistance(4,14) = 2+2+2 = 6。思路:求两个值的异或后算其中1的值class Solution {publi

2017-02-26 19:33:21 212

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除