自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 大数乘法。给定两个数字表示为字符串,返回乘数的数字作为一个字符串。

本题源自LeetCode----------------------------------------思路 :用一个字符串存结果长度为字符串1加上字符串2 的和,1 双重循环,将俩个字符串从尾到头遍历,将字符串1 的每一位相乘字符串2 的每一位赋值给结果字符串。2  是否有进位,3 最后截取结果字符串第一位不是0的的非零子串 string multiply(

2017-10-31 10:53:00 565

原创 给定可能包含重复的数字的集合,返回所有可能的唯一排列。

本题源自LeetCode-------------------------------------------思路 回溯法1 数字可能有 -9 ~ 9  19种取值。2 用一个数组记录每个数字出现的次数。3 然后用回溯法求解代码: int array[19]={0}; vector > permuteUnique(vector &num) { v

2017-10-30 11:12:01 1126

原创 将二维数组旋转90度

思路: 按顺时针旋转分二步1 先按副对角线交换2 然后水平中线对称交换代码: void rotate(vector > &matrix) { int rows=matrix.size(); if(rows==0) return; for(int i=0;i<rows;i++){ //副对角线交换

2017-10-30 10:42:35 1725

原创 Anagram(回文构词法),哈希映射

本题源自LeetCode点击打开链接 -------------------------------------------------------思路: 回文即出现的字符串的字符顺序变化构成。1  用一个map 做映射。map《string,int》2 将字符串排序,然后放入map,值为 字符串在数组中的下标,保证了顺序3 如果已经出现过,就将出现过的字符串压入结果。代码

2017-10-30 09:55:07 519

原创 整数的幂次方

思路1  求整数的幂次方,则考虑三种情况,整数  x 幂次方  n1  如果x=0,n=0 返回1  ,或者n=0 返回1 2  如果x =0 ,n!=0返回 03  考虑 如果  n 为偶数,则 x 的幂次方等于 x的n/2次幂的平方;如果n为奇数,则 等于 x 的 (n-1)/2次幂的平方乘 x。考虑 n  的 符号代码 :非递归 double pow(d

2017-10-30 09:04:30 908

原创 八皇后问题

思路: 首先我们分析一下问题的解,我们每取出一个皇后,放入一行,共有八种不同的放法,然后再放第二个皇后,同样如果不考虑规则,还是有八种放法。于是我们可以用一个八叉树来描述这个过程。从根节点开始,树每增加一层,便是多放一个皇后,直到第8层(根节点为0层),最后得到一个完全八叉树。    紧接着我们开始用深度优先遍历这个八叉树,在遍历的过程中,进行相应的条件的判断。以便去掉不合规则的子树。

2017-10-29 10:47:58 180

原创 数组的 连续子序列最大和

思路:  1 遍历数组,如果当前累加和小于 0 就让和等于0;否则就保留最大的当前累加和int maxSubArray(int A[], int n) { int sum=0; if(n==0) return sum; int maxSum=A[0]; for(int i=0;i<n;i++){

2017-10-29 10:08:58 481

原创 给定一组不重叠的间隔,在间隔中插入一个新的间隔(如有必要,合并)。间隔最初按照起始时间进行排序。

本题源自LeetCode---------------------------------------------------思路 遍历间隔, 1 如果间隔小余要插入的间隔 则直接压入 2 如果有重叠则要合并,合并后的间隔,起始为最小的,结尾为最大的。3 如果遇到比要出入大的,就终止循环,然后把后面比插入大的间隔压入。vector insert(vector &interv

2017-10-28 11:05:19 1097

原创 给定一个字符串s由大小写字母和空白字符组成,返回字符串中最后一个字的长度。 如果最后一个字不存在,则返回0。

本题源自LeetCode-----------------------------------------------代码 : int lengthOfLastWord(const char *s) { stringstream ss(s); string str; while(ss>>str); return st

2017-10-28 10:22:15 2123

原创 给定一整数 n 产生一个 1 到 n*n的螺旋形数组

本题源自LeetCode------------------------------------------例如,假设n = 3,您应该返回以下矩阵:[  [1,2,3]  [8,9,4]  [7,6,5]]思路:即从四个方向构造数组 vector > generateMatrix(int n) { vector> result(

2017-10-28 10:00:37 1545

原创 集合[1,2,3,...,n]总共包含n! 独特排列。 给出n和k 返回第k个排列。

本题源自LeetCode------------------------------------------------------------------------思路1:回溯法  会超时 string getPermutation(int n, int k) { vector dp; string tmp; backPat

2017-10-27 11:38:55 1264

原创 给定一个列表,将列表向右旋转k个位置,其中k是非负数。

本题源自LeetCode-------------------------------------------例如:给定1-> 2-> 3-> 4-> 5-> NULL和k = 2返回4-> 5 - >1-> 2->3-> NULL。思路:1  先遍历整个链表求出长度len,因为 k 可能大于len2 将整个链表形成一个环,3 然后遍历链表,走到len-k处断开链表返回

2017-10-27 10:51:27 1542

原创 给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。

本题源自LeetCode--------------------------------------------------------------------思路 动态规划1  如果 i=0并且 j!=0 则下一步只能向右走。2  否则j=0且i!=0 则只能下走。3 如果 i 和 j 都不等于0  则 选择向下 和向右 最小的那个。int minPathSum(vect

2017-10-27 09:34:05 1154

原创 给定俩个字符串,只包含二进制。求字符串的和

本题源自LeetCode-------------------------------------------------思路:从低位相加,保存进位代码 string addBinary(string a, string b) { int lena =a.length(); int lenb=b.length(); int

2017-10-26 12:18:48 513

原创 判断给定的字符串是否是数字

本题源自leetcoide --------------------------------------------思路1:去除空字符。然后先判断是否为+ 或者 - 然后在判断是否有小数点,再看是否为科学计数法。1  小数点最多有1 位,3 e 只能出现在小数点之后切e 后的数字只能是整数。2 + - 可以出现在首字符或者e 后面的首字符代码 : bool

2017-10-26 10:51:22 626

原创 给定一个数字表示为数字数组,加上一个数字。

本题源自LeetCode---------------------------------------------------------思路: 数组的最后存放的是数的最低位,加上一个1  后,判断是否有进位。代码1: vector plusOne(vector &digits) { int len=digits.size(); int c

2017-10-26 09:29:15 1046

原创 按给定的长度格式,格式化存储给定的字符串

本题源自LeetCode https://www.nowcoder.com/practice/e03feb44880d4254b19fbdf9d124cfe2?tpId=46&tqId=29110&rp=4&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking-------------------------------------------

2017-10-25 11:14:26 273

原创 求X的平方根

本题源自LeetCode----------------------------------------------------------1 牛顿逼近法。 int sqrt(int x) { if(x<2) return x; long r=x; while(r*r>x){ r=(r

2017-10-25 09:30:28 316

原创 斐波那契数列

本题源自LeetCode------------------------------------------------------你正在爬楼梯的情况。达到顶峰需要几个步骤。每次你可以爬1或2步。 你可以爬多少个不同的方式爬上去?代码:非递归: int climbStairs(int n) { if(n<3) return n;

2017-10-25 09:19:00 384

原创 返回给定绝对路径的,简化绝对路径

本题源自LeetCode-----------------------------------------------------例如:path ="/home/", =>"/home"path ="/a/./b/../../c/", =>"/c"思路1:将绝对路径按 / 划分为单个元素。然后判断如果 分割的元素为 '. ’ '则跳过,如果遇见 '..' 则弹出上一个元素。

2017-10-24 11:06:42 1349

原创 给定两个单词word1和word2,将word1转换为word2所需的最小步数. 您有以下3个操作允许一个字:a)插入一个字符 b)删除一个字符 c)替换一个字符

本题源自LeetCode----------------------------------------------------------------------思路 动态规划用一个dp  数组记录需要变化的步数。dp[i]【j】表示字符串长度为i 变为字符串长度j 需要的步数代码: int minDistance(string word1, string word2)

2017-10-24 10:40:22 7118

原创 给定一个m×n矩阵,如果一个元素为0,则将其整行和列的值设置为0.

本题源自LeetCode--------------------------------------------------思路1  遍历整个数组,遇到0  就把整行和整列不为0 的值置为* ,然后再次遍历数组把* 换为0 void setZeroes(vector > &matrix) { int rows=matrix.size(); int col

2017-10-24 09:51:42 7352

原创 三色国旗问题,

思路:设置三个变量,start代表前面的位置,i代表当前遍历,end代表后面位置。则如果遇到前面的,就交换i 和 start 并递增,如果遇到后面的就交换 i 和 end 对应的值,并递减end,否则就向后遍历代码: void sortColors(int A[], int n) { int i=0; int start=0; int

2017-10-24 09:06:55 448

原创 给定字符串S和字符串T,找到S中的最小窗口,其中将包含复杂度O(n)中T中的所有字符。

本题源自LeetCode---------------------------------------------------------思路: 用俩个map,标记T的子串各个字符的数量。代码 string minWindow(string S, string T) { int len1=S.length(); int len2=T.len

2017-10-23 12:28:25 2174

原创 给定两个整数n和k,返回1 ... n中k个数的所有可能组合。

本题源自leetcode-------------------------------------------------思路回溯法 vector > combine(int n, int k) { vector> result; if(nn) return result; vector path;

2017-10-23 10:35:38 6676 1

原创 给定一组不同的整数,S返回所有可能的子集。

思路:回溯法然后对结果排序 vector > subsets(vector &S) {        vector> result;        int len=S.size();        if(len==0)            return result;        vector path;        sort(S.begin(

2017-10-23 09:57:52 1246

原创 给出一个2D板和一个单词,找出这个单词是否存在于网格中。 该单词可以由顺序相邻单元的字母构成,其中“相邻”单元是水平或垂直相邻的单元。 相同的字母单元可能不会被多次使用。

思路:回溯法,依次查找上下左右。四个 bool exist(vector > &board, string word) { int rows=board.size(); int cols=0; if(rows!=0) cols=board[0].size(); if(rows==0||cols==0)

2017-10-23 09:45:53 1697

原创 跟踪“删除重复”: 如果最多允许重复两次。

本题源自LeetCode-------------------------------------------------------思路一:即再用一个下标,表示新数组的长度。 int removeDuplicates(int A[], int n) { int index=0; for(int i=0;i<n;i++){

2017-10-23 09:08:03 199

原创 在一个有序的旋转数组中,查找给定值

思路一:因为数组有序,经过旋转后,数组保持局部有序。因此可以用二分查找。bool search(int A[], int n, int target) { int start=0; int end=n-1; while(start<=end){ int mid=(start+end)>>1; if(

2017-10-21 13:52:05 879

原创 给定一个排序的链接列表,删除所有重复项,使每个元素只显示一次。

本题源自leetcode ---------------------------------------------------------------------------------思路一 :创建头结点。 ListNode *deleteDuplicates(ListNode *head) { if(head==NULL||head->next==N

2017-10-21 11:16:21 538

原创 给定一个排序的链表,删除所有具有重复数字的节点,从原始列表中只留下不同的数字。

思路1:新建一个头节点,值为头节点值-1.如果当前节点有重复,就删除节点指直到不重复的,将当前节点的前一个节点的指针指向不重复的,保持链表不断。 ListNode *deleteDuplicates(ListNode *head) { if(head==NULL||head->next==NULL) return head; L

2017-10-21 11:00:34 1006

原创 给定填充0和1的二维二进制矩阵,找到包含所有的最大矩形并返回其区域。

本题源自LeetCode-----------------------------------------------------------------思路:用求直方图的最大面积求解。遍历二维数组。统计当前行及以上的直方图,然后计算。保存最大面积。直方图的最大面积:用一个堆栈做数据结构,如果堆栈为空就将下标压栈,如果栈顶元素大于要入栈的元素,就将所有比入栈元素大的弹出,计算面

2017-10-21 09:38:50 3792

原创 给定一个链表和一个值x,对它进行分区,使得小于x的所有节点都在大于或等于x的节点之前.保留两个分区中的每一个节点的原始相对顺序。

本题源自LeetCode------------------------------------------------------------例如:Given1->4->3->2->5->2and x = 3,return1->2->2->4->3->5.思路:先找到第一个大于或者等于给定值的节点p,然后将之后小于给定值的节点按顺序插入到p前面。  代码 :

2017-10-20 10:21:10 2165

原创 使用以下映射将包含A-ZIS的字母的消息编码为数字:'A' - > 1,'B' - > 2 ...'Z' - > 26 给定包含数字的编码消息,确定解码方式的总数。

本题源自LeetCode--------------------------------------------------------------------动态规划求解:用dp[s.length()+1]表示字符串s的解码方式dp[i] 表示i的字符的合法编码数量,取决于当前字符i   dp[i] += dp[i-1],if s[i-1] ~('0'--'9')   d

2017-10-19 09:27:47 2674 1

原创 给定一个可能包含重复的整数的集合,S返回所有可能的子集。

本题源自LeetCode--------------------------------------------------------------------------------------大神的回溯法思路:http://blog.csdn.net/versencoder/article/details/52071930回溯法求解 1 传统的 内存超时: vec

2017-10-18 11:10:02 2856

原创 将链接列表从位置m反转到n。 在原位和一次通过。

思路:先找到m节点,并保存m的前节点pre。然后将m到n 之间的节点按头插法插入到 pre 节点之后。代码: ListNode *reverseBetween(ListNode *head, int m, int n) { if(head==NULL||m==n) return head; ListNode* p=head;

2017-10-18 10:23:17 320

原创 给定一个字符串只含有数字,判定这个字符串能表达的所有IP地址

本题源自LeetCode-------------------------------------------------------------------用三重循环遍历字符串,每个段的长度不能超过三,java代码: public ArrayList restoreIpAddresses(String s) { ArrayList result=new A

2017-10-18 09:22:06 5849 1

原创 树的前,中,后 序遍历

非递归: vector inorderTraversal(TreeNode *root) { vector result; if(root==NULL) return result; stack trees; while(!trees.empty()||root){ while(

2017-10-17 10:12:23 226

原创 给定n,生成存储值1 ... n的所有结构唯一的BST(二叉搜索树)。

本题源自LeetCode--------------------------------------------------------------------------------给定数字3 例如 1 3 3 2 1 \ / / / \ \ 3 2

2017-10-17 09:42:11 1241

转载 给定s1,s2,s3,发现是否通过s1和s2的交错形成s3。

本题源自LeetCode-------------------------------------------------------------------例如s1 ="aabcc",s2 ="dbbca", When s3 ="aadbbcbcac", return true.When s3 ="aadbbbaccc", return false. --------

2017-10-15 12:18:21 1664

opengl 消隐算法

OpenGL 实现消隐算法 通过控制键盘来实现图形的平移,可以上下左右移动

2014-11-24

空空如也

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

TA关注的人

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