自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Kang_TJU的博客

潮平两岸阔,风正一帆悬

  • 博客(54)
  • 收藏
  • 关注

原创 leetcode-101-Symmetric Tree

问题题目:[leetcode-101]思路大的思路基于广搜去写。当然,这个是我看了提示想到的。 起初写的时候考虑简单的情形就好了,保存每一层的所有节点。然后判断该层节点是否是回文即可,要注意一点,如果子节点为NULL,队列里面虽然不加入该节点指针,但是节点的值还是需要保存一个值。代码/** * Definition for a binary tree node. * struct TreeNo

2017-02-27 22:47:20 260

原创 leetcode-110-Balanced Binary Tree

问题题目:[leetcode-110]思路这个题其实思路也很清晰,就是枚举每一个点即可。 所以本质是遍历。只不过遍历的时候,每个点需要判断是不是平衡的。这个操作我单独写visit函数即可。 上次的path sum iii对我在遍历有了更进一步的认识。代码/** * Definition for a binary tree node. * struct TreeNode { * in

2017-02-27 21:35:13 466 1

原创 线性表之链表的实现(二)-静态链表实现

静态链表基本概念这一部分的内容主要参照了这篇帖子[静态链表 C实现]的内容。并且贴上的说明图也是来自于这篇帖子,再次特做声明。什么是静态链表 用全局数据实现的链表叫做静态链表。由于全局数组是存储在静态区,又叫做静态链表。优缺点 优点: 其一,保持了传统链表的优点。对于插入和删除操作效率比较高,只需要修改指针的指向即可,不需要大量的移动元素。 其二,由于预先分配了较大空间

2017-02-26 22:34:32 2811 1

原创 剑指offer-替换空格

问题题目:[替换空格]思路这个题思路其实并不难,如果要是把题意说全的话。 但是我觉得这个题的关键点就是在这,起初我做的时候,以为是要自己开辟空间,可是又没法返回,我就尝试对于原来的str释放空间,可是人家是数组空间,不是动态开辟的,你还没法释放。所以,就想不到解决办法了。看了[剑指offer——替换空格]之后,才发现原来题意说的是空间给你充分的时候。但是,如果题目没有这么说,凭借自己的知识也应该猜

2017-02-26 22:10:57 278

原创 leetcode-111-Minimum Depth of Binary Tree

问题题目:[leetcode-111]思路递归的思路没有错,和求树的深度差不多。 但是,如果左枝或者右枝为空,需要单独考虑。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * Tre

2017-02-26 21:51:00 315

原创 leetcode-236-Lowest Common Ancestor of a Binary Tree

问题题目:[leetcode-236]思路公共祖先,想法和前一道题目最初的做法一样。 找到他们两的路径,然后比较路径的最浅公共节点。当然,有主意特殊数据的情形。 如果p和q在不在树里,显然没有公共父亲。 所以,虽然实际题意没有考虑这种情形,但是我应该考虑。然后,在判断是否存在root==p || root==q这种情形,因为不用再比了。 肯定是公共节点了。这个题有点烦的是getPath的实现

2017-02-25 22:11:39 344

原创 leetcode-235-Lowest Common Ancestor of a Binary Search Tree

问题题目:[leetcode-235]思路先说一点,不管什么题。以做出来为标准。 这个题刚上来没有好的思路,只能说是把p和q的路径求出来,然后根据两条路径,从下往上寻找公共节点。 这个题稍微花了我点时间,主要是在求节点路径的接口设计上,参数用引用的方法没有用。值传递需要最后返回。返回后要判断是否需要进行另外一枝的搜索。代码/** * Definition for a binary tree n

2017-02-25 10:44:14 250

原创 leetcode-257-Binary Tree Paths

问题题目:[leetcode-257]思路深度优先即可。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),

2017-02-24 20:21:44 374

原创 leetcode-107-Binary Tree Level Order Traversal II

问题题目:[leetcode-107]思路层序遍历。 但是要保存每一层的节点。所以关键就是标记每一层的节点, 引入每一层最右端节点last。对于出队后的节点进行判断,如果是last。证明已经访问完本层所有节点,队列中目前的节点全部是下一层的节点。此时更新last即可。代码/** * Definition for a binary tree node. * struct TreeNode {

2017-02-24 19:58:26 262

原创 leetcode-459-Repeated Substring Pattern

问题题目:[leetcode-459]思路没有别的办法,枚举所有的周期长度。这题我在白书里面看到过,所以直接就做了。代码class Solution {public: bool repeatedSubstringPattern(string s) { int sz = s.size(); int len = sz/2; while(len)

2017-02-23 22:52:04 374

原创 leetcode-437-Path Sum III

问题题目:[Path Sum III]思路这个题目其实挺好的,感觉对于preOrder的理解一下又上升了一个层次。 当然,这个题本身我没做出来。实际做的时候,只能说做出了一部分。还是对于遍历这件事本省立即的不充分。还有对于递归的语义没有想清楚。 这到题麻烦的一点是说:不一定从根节点开始,你可以从任意节点。只要是从它开始字段和为sum即可。那这个题的解法不就是,遍历每一个点,然后从每一节点开始寻找

2017-02-22 11:23:43 378

原创 面向对象设计方法理解

基本概念什么是面向对象 总的来说,面向对象方法认为客观世界是由各种对象所构成。任何事物都可以看作是对象,复杂的对象是由较为简单的对象以某种关系复合而成; 每个对象都被划分为一个对象类,每个对象类都分别定义了一组数据和一组方法,按照子类(也叫做派生类)和父类(也叫做基类)的关系, 若干个对象类可以组成一个系统,这种系统均为层次结构,在这种层次结构中,不同的对象类之间仅能通过传递

2017-02-21 16:14:22 796

原创 leetcode-520-Detect Capital

问题题目:[leetcode-520]思路判断的情形多一点,把每种情形都考虑清楚就好。 合法的情形按照题意就三种:全部大写:首字母大写,第二个大写,其余大写全部小写:首字母小写,其余小写首字母大写,其余小写:首字母大写,第二个小写,其余小写代码/*firstsecondothers*/class Solution {public: bool detectCapitalUs

2017-02-21 14:46:18 737

原创 leetcode-70-Climbing Stairs

问题题目:[Climbing Stairs]思路DP,斐波那契数列是转移方程。代码class Solution {public: int climbStairs(int n) { if(1==n) return 1; else if(2==n) return 2; else{ int f1 = 1;

2017-02-20 17:38:29 398

原创 leetcode-326-Power of Three

问题题目:[leetcode-326]思路想法很简单,只要能一直被3整除即可。最后,数字一定是1。反之,则不是3的次数幂。代码class Solution {public: bool isPowerOfThree(int n) { if(n<1) return false; while(n%3==0){ n /= 3;

2017-02-20 17:30:02 370

原创 leetcode-35-Search Insert Position

问题题目:[leetcode-35]思路二分查找,基础题。 但是,查找失败时的插入位置为high+1或者low代码class Solution {public: int searchInsert(vector<int>& nums, int target) { return biSearch( nums, 0, nums.size()-1, target ); }

2017-02-20 16:16:50 371

原创 背包问题汇总

问题思路小心下标对应不一致带来的问题。小心。zero_one_pack(v[i],c[i]) for j = M to c[i] f[j] = max( f[j-c[i]]+v[i] , f[j] )f[0......M] = 0; // 初始化第0行,即一个物品都没有的情形。J一定要包括0.这是关键。for i = 1 to N zero_one_pack

2017-02-19 22:33:03 497

原创 背包系列

本文主要总结我对背包问题学习的心得,主要是把我以前在印象笔记中的内容搬了过来。基本概念先给出常见的背包情形: 01背包(ZeroOnePack): 有N件物品和一个容量为V的背包。(每种物品均只有一件)第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 完全背包(CompletePack): 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物

2017-02-19 20:19:36 292

原创 leetcode-236-Ugly Number

问题题目:[leetcode-236]思路素数筛法的思路。但是第一遍TLE。 仔细想了下,这个两边循环的代码时间是没有问题的,因为之前的帖子也学习了。不是完全的O(N2)O(N^{2})的复杂度。所以,考虑整数的最大值2147483647。500002>INTMAX50000^{2} > INTMAX。 所以,我猜测可能是辅助空间开大了。因为之前看的和num一样大,那么当num给INT_MAX的

2017-02-19 11:57:56 393

原创 leetcode-225-Implement Stack using Queues

问题题目:[leetcode-225]思路一个实现队列,一个辅助队列。需要注意的是,helper函数需要些两个。处理对尾的情形。代码class MyStack {public: /** Initialize your data structure here. */ MyStack() {} /** Push element x onto stack. */ void

2017-02-19 11:24:14 325

原创 leetcode-232-Implement Queue using Stacks

问题题目:[leetcode-232]思路借助一个辅助栈去实现。把一个栈导入另一个栈,辅助的操作可以写成一个函数。代码class MyQueue {public: /** Initialize your data structure here. */ MyQueue() {} /** Push element x to the back of queue. */ vo

2017-02-19 10:56:23 457

原创 剑指offer-用两个栈实现队列

问题题目:[用两个栈实现队列]思路入队好办,出队的时候把一个栈的元素倒入另外一个栈即可。代码class Solution{public: void push(int node) { stack1.push(node); } int pop() { helper(stack1,stack2); int front

2017-02-18 20:10:30 208

原创 leetcode-204-Count Primes

问题题目:[leetcode-204]思路素数筛法。 方法不难,但是搞了我很多时间。首先不用全局或者静态变量,在堆上开辟是一样的。 用vector就好。之前做acm的时候,用的全局初始化。 然后后面每次判断就很容易。但是,用c++写的时候,由于没用全局或者静态变量。 所以,在写的时候。我一直有个误区:单次觉得没有初始化的必要。 一直纠结在怎么样全局变量和静态变量上。其实,单次跑的时候,也有

2017-02-18 11:28:09 504

原创 类的静态成员学习

本文记录我对c++ primer以及Introduction to programming with c++关于静态成员这一节的学习基本概念静态成员 从形式上来说,用static关键字声明的变量或者函数就是静态成员。它可以是public或者是private。对数据类型也没有过多的限制。 从意义上理解来说,静态成员是这样的一种成员:与类保持关联而不与类的对象保持关联。也即,类的静态成员存在于

2017-02-17 22:17:41 377

原创 素数筛法系列

本目主要整理素数筛法的若干技巧。思路 首先需要一个性质: 合数必有素因子 其次,围绕这个定理可以展开相关证明。那么,当再需要判断一个数是否是素数的时候,只需判断它能不能被这些素因子整除。若可以,则不为素数,即为合数。反之,则是素数。 当有了上面的思路之后,我们进步一步的换一个角度,既然所有合数都有素因子,那么当我们获得一个素数时,可以把它的倍数全部标记为

2017-02-17 18:42:46 459

原创 leetcode-202-Happy Number

问题题目:[leetcode-202]思路这个题起初没想明白终止条件,后来才明白。做题的时候要注意,既然你想的和题目思路不一致,肯定是你错了。所以,还是要像题目思路靠拢。我又仔细看看了题目,发现题目其实说了终止的两个条件,只不过自己审题不清楚。结尾数字是1在一个环里面反复循环第二点说明了,不会出现更多的数字。既然你在环里面反复迭代,那证明肯定有重复的数字存在。这点毋庸置疑,所以改用hash表即

2017-02-17 15:56:30 346

原创 leetcode-501-Find Mode in Binary Search Tree

问题题目:[leetcode-501]思路常规题。遍历一遍,找出出现次数最大的值。 然后枚举哈希表即可。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int

2017-02-15 22:34:03 952

原创 面试常考算法题(九)-最长公共字串

问题思路代码

2017-02-14 21:34:02 473

原创 数据库基本概念学习-数据库设计

本文主要参考了[数据库的概念设计与逻辑设计]译文。复习了数据库当中的概念设计、逻辑设计、物理设计等基本概念。基本概念概念设计 概念设计的目的是根据需求分析的结果,将用户对数据的需求综合成一个统一的概念模型,它是整个数据库设计的关键。 设计时,一般是先根据单个应用的需求,画出能反映每个应用需求的局部E-R模型。然后把这些E-R图合并起来,并消除冗余和可能存在的矛盾,得到系统的E-R图。

2017-02-14 15:26:13 1190

原创 LaTex语法学习-大括号公式编辑

为了避免生成公式,最后的$符号单独写在外面。 $$ dp[i]=\left{ \begin{array}{rcl} &a[i] && ,\ {dp[i-1] \leq 0} \ &dp[i-1] + a[i] && ,\ {dp[i-1]} > 0\ \ \end{array} \right. \tag{1}$$

2017-02-14 14:15:44 3357

原创 leetcode-121-Best Time to Buy and Sell Stock

问题题目:[leetcode-121]思路蛮力法,计算所有可能的情形。O(N2)O(N^2)的复杂度。代码(TLE)class Solutiocn {public: int maxProfit(vector<int>& prices) { int sz = prices.size(); if(!sz) return 0; int ans = 0

2017-02-14 13:57:25 312

原创 LaTex语法学习-公式编辑当中空格的写法

LaTex中公式当中空格的写法。 两个quad空格 a \qquad b a \qquad b 两个m的宽度 quad空格 a \quad b a \quad b 一个m的宽度 大空格 a\ b a\ b 1/3m宽度 中等空格 a\;b a\;b 2/7m宽度 小空格 a,b a,b 1/6m宽度 没有空

2017-02-13 20:34:41 1254

原创 leetcode-504-Base7

问题题目:[leetcode-504]思路需要弄清楚一点啊。+1和-1转换成二进制,为什么和+1和-1转换为7进制的方法不一样。后者为什么更简单。代码class Solution {public: string convertToBase7(int num) { if(!num) return "0"; std::string ans; boo

2017-02-13 17:25:11 963

原创 剑指offer-二维数组中的查找

问题题目:[二维数组中的查找]思路蛮力法肯定可以做。 但是考虑有序的特性,所以,二分查找。 但是,我做的是否还是犯了错误。那证明这题出的很成功嘛! 因为我是认为这个数组是这样的: 1.0 2.0 3.0 1.1 2.1 3.1 1.2 2.2 3.2 即每一行或者每一列都完全小于下一行或者下一列。 题目的意思只说了,从左至右有序,从上到下有序。上面的情况属于特例。 比如: 1,2

2017-02-12 21:03:43 432

原创 leetcode-108-Convert Sorted Array to Binary Search Tree

问题题目:[leetcode-108]思路本省以为是BST调整为AVL。没有思路,看了下别人给的思路。其实就是根据二分查找的思路去构造BST。一样是AVL。 那么语义就很清晰了。 TreeNode* biInsert(TreeNode* root, const std::vector& nums, int low, int high) 表示把[low, high]区间内的数插入到root

2017-02-12 20:04:16 250

原创 多态初识

本文主要记录我对Introduction to Programming with c++当中多态学习的笔记。整理了相关的知识点。基本概念继承和多态的关系 先简述我对这二者的理解,继承的作用主要是在进行类设计的时候,可以不用重新设计各个类,而是可以在已有类的基础之上,对这些已有类的特征进行继承,并且增加新的特征从而提高代码重用性的一种机制。其中,继承和派生从理解的角度来说主要是表达一种一般和特殊的

2017-02-12 13:34:48 282

原创 UML学习-用startuml画用例图

基本概念用例图: 参与者、用例以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。参与者: 参与者是指存在于系统外部并直接与系统交互的人、系统或设备等。参与者按是否使用系统核心功能可分为主要参与者与次要参与者。在uml中用Actor表示。用例: 用例系统为参与者提供的功能。对于用例的命名我们可以给用例取一个简单的名称,概括性的名称。一般是带有动作性的名称。用例在画图中用椭圆

2017-02-12 11:36:56 2716

原创 leetcode-112-Best Time to Buy and Sell Stock II

问题题目:[leetcode-112]思路题意都没搞懂。 看了别人的才明白,就是说给你一个数组,是一只股票每天的价格。你需要找准一个买入和卖出的时机。可以获得最大利润。 比如:[3,1,4,5,4,1,6]。第一次买入时机是1,卖出时机是5。第二次买入时机是1,卖出时机是6。波谷买入,波峰卖出。算是贪心法吧。代码class Solution {public: int maxProfit

2017-02-11 21:11:38 473

原创 leetcode-447-Number of Boomerangs

问题题目:[leetcode-447]思路这个题就是拼体力,其实也是拼实力。只要有一线生机,也要去做。这个题我做的时候数次向放弃,因为觉得自己的方法不好。但是无论如何还是坚持下来了,其实思路也很朴素。坚持就行。代码class Solution {public: int numberOfBoomerangs(vector<pair<int, int>>& points) {

2017-02-11 20:47:04 436

原创 剑指offer-和为S的连续正数序列-两根指针

问题题目:[和为S的连续正数序列]思路这个题吧,出的确实挺好的。 和上个题完美演绎了两根指针的用法。 第一次错误是因为,这两个虽然很像,但是两根指针的意义并不同。 并且开始时的位置也不同。本题,我之所以前面做错了,因为把两根指针意义没搞懂。 上个题,small较小数。big是较大数。如果和较大, –big。反之,++small 但是,这个题目不一样,low和high是区间。如果区间和小,h

2017-02-11 16:19:20 285

空空如也

空空如也

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

TA关注的人

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