C/C++
i-Blue
抱平常心走平常路
展开
-
3Sum Closest
tags:two pointers解法思想见:http://www.sigmainfy.com/blog/summary-of-ksum-problems.html代码:class Solution {public: int threeSumClosest(vector& nums, int target) { sort(nums.begin(), nums.原创 2016-08-23 21:59:07 · 209 阅读 · 0 评论 -
Russian Doll Envelopes-最长递增子序列
方法:DP+ 二分搜索具体一点说,二分搜索是用在LIS(最长递增子序列)中(LIS见:点击打开链接)。主要思想就是LIS的思想。有O(N*N)和O(NlgN)两种解法。不论是哪种解法,首先都得按照w(宽)值对envelopes进行递增排序。简单直观的O(N*N)的方法。class Solution {public: int maxEnvelopes(vector>& env原创 2016-08-17 01:12:34 · 326 阅读 · 0 评论 -
Isomorphic Strings
tags:hash table两种情况下返回false:1)s中一个字符对应t中两个不同的字符。2)t中一个字符对应s中两个不同的字符。其他情况下都返回true。建两个hash表,m1、m2。代码:class Solution {public: bool isIsomorphic(string s, string t) { int size = s.size原创 2016-08-25 16:21:57 · 217 阅读 · 0 评论 -
LeetCode-做题简记
2016年夏天开始,跟着学校的一个leetcode群每天做一题。下面记录下过程中没来得及做的,或者没做好的,或者个人觉得得留意下的题目,以备更好的回顾。菜鸟一个~未做的题目(有空补上):112. Path Sum241. Different Ways to Add Parentheses3. Longest Substring Without Repeating Cha原创 2016-09-22 20:04:49 · 233 阅读 · 0 评论 -
c++ list, vector, map, set 区别与用法比较
转自:http://blog.csdn.net/alex_xhl/article/details/37692297List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度转载 2016-09-26 20:14:19 · 687 阅读 · 0 评论 -
c/c++中const成员函数的返回值类型
const成员函数又称为访问函数,在const函数体内不能修改成员变量的值。那么对于const函数的返回值呢?结合网上内容,写了一个小的实验代码,class T{public: struct pNode{ int x; int y; }; //不规划的构造 T(){ p = new pNode; p->x = 1; p->y = 2; } //在原创 2017-01-05 20:31:21 · 2846 阅读 · 1 评论 -
二维数组和指向指针的指针
二维数组和指向指针的指针一道面试题引发的问题,首先要知道[]的优先级高于*,题目:char **p,a[6][8]; 问p=a是否会导致程序在以后出现问题?为什么?直接用程序说明:#includevoid main(){ char **p,a[6][8]; p = a; printf("\n");}转载 2017-02-18 15:52:15 · 767 阅读 · 0 评论 -
C++拷贝构造函数详解
转自:http://blog.csdn.net/lwbeyond/article/details/6202256/一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂转载 2017-02-23 19:27:52 · 443 阅读 · 0 评论 -
binary indexed tree 二分索引树 树状数组
参考:https://www.byvoid.com/blog/binary-index-treehttp://www.cnblogs.com/sixdaycoder/p/4348360.htmlhttp://blog.csdn.net/liangzhaoyang1/article/details/513651921)求CiC[i] = A[i-2^k+1]原创 2016-08-19 20:07:34 · 1457 阅读 · 0 评论 -
349. Intersection of Two Arrays
Tags- binary search, hash table, two pointers, sort方法一:sort+binary search先对nums1、nums2从小到大排序,然后,对于nums2中不同的元素,我们在nums1中二分搜索,看看是否存在。这里注意,nums2中的元素是排过序的,所以没有必要每个元素都在(0, nums1.size()-1)中二分搜索。比如,num原创 2016-08-19 15:33:29 · 284 阅读 · 0 评论 -
C++控制台输入
当在控制台输入数据时,所有的数据都是输入到缓冲区的,当从其中提取数据时,也是从缓冲区提取的!其有一个指向缓冲区的指针,就是通过此指针对数据提取的。例如cin>>a;就是通过>>的重载实现从缓冲区取出数据并进行相应的转换后赋值给a;如果缓冲区没有数据的话,则等待用户输入数据。1.对于从控制台读入数据到数据结构中,主要要了解的是:1,读入的数据是什么(尤其针对字符串,是否包括空转载 2015-03-26 21:17:00 · 3478 阅读 · 0 评论 -
static静态变量(转)
static静态变量的理解(转自http://www.cnblogs.com/dongzhiquan/archive/2009/07/21/1994792.html)静态变量 类型说明符是static。静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以转载 2015-03-14 17:38:16 · 532 阅读 · 0 评论 -
c语言字符数组与字符串的使用详解(转)
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定转载 2015-03-14 17:16:01 · 583 阅读 · 0 评论 -
C语言的那些秘密之---函数返回局部变量
转自:http://blog.csdn.net/haiwil/article/details/6691854 一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指转载 2015-03-14 15:29:25 · 574 阅读 · 0 评论 -
动态分配的二维字符数组 赋值时记得加‘\0’
char **p;p = new char *[3]; for (int i = 0; i p[i] = new char[3];for(int i = 0; i for(int j = 0; j p[i][j] = 'a';cout 输出的p[0]、 p[1] 每行后面会有乱码,因为没有结束符'\0'。但若:char **p;p = new原创 2016-03-25 20:13:00 · 1769 阅读 · 0 评论 -
递归方法生成N位的格雷码
原理:点击打开链接网上看见的几种形式的函数:动态字符数组形式:char** GrayCode(int n){int temp = 1;for (int i = 0; itemp *= 2;//n位格雷码一共有2^n个码字 char **graycode = new char*[temp];//动态申请2^n *n大小的数组,存放格雷码 for (in原创 2016-03-25 20:41:12 · 2836 阅读 · 0 评论 -
HDU 4813-Hard Code-字符串
很水的题目。#include#includeusing namespace std;void main(){int L = 0, N = 0, M = 0;cin >> L;for (int k = 0; k {string s;cin >> N >> M >> s;if (s.length() != N*M)cout原创 2016-03-27 16:44:35 · 562 阅读 · 0 评论 -
131. Palindrome Partitioning
回文分割。DP+dfs。先判断str中任意字串是否是回文,用动态规划方法://construct the pailndrome checking matrix// 1) matrix[i][j] = true; if (i==j) -- only one char// 2) matrix[i][j] = true; if (i==j+1) && s[i]==s[j] -- o原创 2016-08-16 00:49:37 · 403 阅读 · 0 评论 -
最长递增子序列
问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.解法1:最长公共子序列法这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2, 5, 6转载 2017-03-31 23:28:00 · 398 阅读 · 0 评论