自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [算法导论]2.2节编程练习C++实现

2.2节重点描述评估算法性能的工具—时间复杂度。练习:2.2-3 选择排序算法的实现。由于选择排序在最好情况的输入下也要将数组中的值全部都比较一遍,所以其在最好情况和最坏情况下的时间复杂度均为n^2。#include #include #include using namespace std;vector select(vector& A){ int len = A.size

2016-09-24 16:45:31 309

原创 [算法导论]2.1节编程练习C++实现

文章中的伪代码的C++实现:1.INSERTION-SORT(A)插入排序(非降序排序)#include #include #include using namespace std;vector insertion(vector& A){ int length = A.size(); for (int j = 1; j < length; j++){ int key = A

2016-09-24 15:06:13 289

原创 【LeetCode-260】Single Number(C++)

题目要求:给出一个数组,这个数组中只有两个数是只有一个的,其余的数都有两个。如 num=[1,2,1,3,2,5],要求返回这两个不重复的数,返回[3,5]。解题方法:1. 一开始想到的方法就是用C++中的STL容器set。循环判断数组中的数,如果set中不存在这个数,就将这个数存到set中,如果set中已经存在,就将这个数删掉。当循环完后,set中将会只剩下不重复的两个数。class

2016-09-18 22:57:32 282

原创 【LeetCode-338】Counting Bits(C++)

题目要求:给出一个非负整数num,求出0-num范围内的(num+1)个整数,每个整数的二进制表达中1的位数。Follow Up:时间复杂度为O(n*sizeof(integer))的解法很简单,要求实现时间复杂度为O(n)的算法。解题方法:1. 时间复杂度为O(n*sizeof(integer))的算法。程序如下,一共有n+1个数,每个数都要一位一位的判断是否为1,所以时间复杂度为O(n

2016-09-18 21:09:58 466

原创 【LeetCode-145】Binary Tree Postorder Traversal(C++)

题目要求:完成二叉树的后序遍历(递归的方式很简单,请尝试用循环的方式来完成)解决方法:1.递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x

2016-09-17 17:20:04 387

原创 【LeetCode-94】Binary Tree Inorder Traversal(C++)

题目要求:完成二叉树的中序遍历。解题方法:1.递归。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL

2016-09-17 15:55:47 429

原创 【LeetCode-144】Binary Tree Preorder Traversal(C++)

题目要求:完成二叉树的前序遍历。解题方法:1.递归的方法。很简单。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), le

2016-09-17 15:33:42 278

原创 【LeetCode-111】Minimum Depth of Binary Tree(C++)

题目要求:给出一棵树,求出这棵树的最小深度,最小深度的意思是从该棵树的根节点到叶子节点的最短路径上的节点个数。解题方法:相当于树的层序遍历,用两个队列来实现树中层次的划分,每遍历完一层,并且遍历的时候没有遇到叶子节点,就把深度值加一。只要遍历的过程中遇到了叶子节点,就返回深度值。/** * Definition for a binary tree node. * struct Tree

2016-09-17 12:27:17 315

原创 【LeetCode-257】Binary Tree Paths(C++)

题目要求:要求输出一个二叉树的所有从根节点到叶子节点的路径。解题方法:1. 可以用递归的方法实现,将根节点的左右子树所输出的两个数组合并为一个数组,并将得到的数组的每一个string元素头部加上"to_string(root->va)->l",其中to_string()是C++中的一个可以将int型转换为string类型的函数。/** * Definition for a binar

2016-09-17 11:46:55 657

原创 【LeetCode-107】Binary Tree Level Order Traversal II(C++)

题目要求;这道题的要求与102题 Binary Tree Level Order Traversal的要求差不多,这不过102的题目要求输出的数组中的节点顺序是由根节点到叶子节点,而本题要求的顺序是由叶子节点到根节点。解题方法:基本思路与102题一样,用两个队列来实现节点的层次之间的分离,与102题不同的是增加了一个栈来对顺序进行反转。/** * Definition for a bin

2016-09-16 20:22:46 292

原创 【LeetCode-102】Binary Tree Level Order Traversal(C++)

题目要求:二叉树的层序遍历,给出一棵树,返回一个存储着数组的数组v,每个层的节点组成一个数组,所有层的节点数组组成v。解题方法:用两个队列来实现,一个队列用来存储上一层的节点,另一个队列用来存储下一层的节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo

2016-09-16 20:17:33 272

原创 二叉树的前序、中序、后序三种遍历的六种实现方式(递归、非递归)(C++)

实现语言:C++存储方式:链式存储struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x):val(x),left(NULL),right(NULL);}一、前序遍历前序遍历方式:根左右递归实现:递归实现的方式代码一般比较简单快捷。voi

2016-09-14 15:26:50 13003 5

原创 【LeetCode-19】Remove Nth Node From End of List(C++)

题目要求:给出一个单链表,要求删除该单链表中从后面数的第n个节点。解决方法:首先遍历链表,得到链表中的节点个数num。则num-n+1就是从头开始数的需要删除的节点位置。然后再从头开始遍历到第num-n个节点p2,用p2->next=p2->next->next;删除掉第num-n+1个节点。/** * Definition for singly-linked list. * stru

2016-09-10 11:41:12 273

原创 【LeetCode-205】Isomorphic Strings(C++)

题目要求:判断两个字符串的模式相同,及用一个字符串中的字符替换相同位置的第二个字符串中的字符,得到的字符串与第一个字符串相同。解题方法:这道题要求映射唯一,及对于字符串s中的字符,在t中仅有一个相同位置的字符与其相对应。同样对于t中的字符,在s中也仅有一个相同位置的字符与其相对应。故用两个map来保证这种对应的唯一性。class Solution {public: bool is

2016-09-09 22:40:50 724

原创 【LeetCode-374】Guess Number Higher or Lower(C++)

题目要求:猜数字,如果猜对了guess函数会返回0,如果没有猜对guess函数会告诉你猜大了还是猜小了。直到你猜出这个数并返回。解题方法:典型的二分查找。有一个点需要注意:取中间数的时候一定要这么取: int g=l+(h-l)/2; 因为如果写成 int g=(l+h)/2;会因为(l+h)计算值太大了超过了int的表达范围产生溢出。// Forward declaration of

2016-09-09 11:52:21 418

原创 【LeetCode-112】Path Sum(C++)

题目要求:判断一棵二叉树中是否存在一个从根到叶子的路径,使得这条路径上所有数之和为给定的值sum。解题思路:很简单的递归实现。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2016-09-08 11:45:06 369

原创 【LeetCode-119】 Pascal's Triangle II(C++)

题目要求:返回杨辉三角的第k行。解题方法:1.第一种方法就是根据杨辉三角的构成方式,每一行的元素等于上一行元素的左右两个数之和,然后将每一行都算出来循环计算。class Solution {public: vector getRow(int rowIndex) { vector result(rowIndex+1,1); if(rowIndex

2016-09-08 11:34:45 948

原创 【LeetCode-26】 Remove Duplicates from Sorted Array(C++)

题目要求:删除一个已排序的数组中重复的元素,并返回删除之后数组中的元素个数。解答方法:从第一个元素开始依次判断该元素是否与下一个元素相等,若相等则删除,若不等则指针往后挪一位开始判断下一个元素。class Solution {public: int removeDuplicates(vector& nums) { if (nums.empty()) return 0; i

2016-09-07 16:13:01 182

原创 【LeetCode-225】 Implement Stack using Queues(C++)

题目要求:用队列实现站的push,pop,empty,top的四个函数。解题思路:用两个队列来实现。class Stack {public: // Push element x onto stack. void push(int x) { if(q1.size()>=0&&q2.size()==0) q1.push(x);

2016-09-03 17:59:25 504

原创 【LeetCode-232】 Implement Queue using Stacks(C++)

题目要求:用站实现队列的插入,删除,返回队头元素和判断是否为空四种操作。解题方法:用两个栈实现队列。代码如下:class Queue {public: // Push element x to the back of queue. void push(int x) { s1.push(x); } // Removes the elemen

2016-09-03 17:37:16 647

原创 【LeetCode-101】 Symmetric Tree(C++)

题目要求:判断一棵二叉树是不是轴对称。解题方法:递归的方法(用循环实现现在不想写,有点困,等回头写了之后再来改博客)/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN

2016-09-03 16:34:52 386

原创 【LeetCode-66】Plus One(C++)

题目要求:给出一个数组vector,表示一个数。将这个数加上1,返回加上1之后所得到的数组。解决方法:很简单,直接贴代码。class Solution {public: vector plusOne(vector& digits) { int end=digits.size()-1; if(digits[end]!=9){

2016-09-03 15:15:21 544

原创 【LeetCode-387】First Unique Character in a String(C++)

题目要求:找到一个字符串中第一个不重复的字符,假设字符串中的所有字符均为小写字母。解题方法:与前面的389,383的解题思路一样,由于字符串中的字符全部为小写字母,故用一个大小为26的数组来存储每个字母出现的次数。然后在从字符串中的第一个字符开始依次判断其出现次数是否为1。class Solution {public: int firstUniqChar(string s) {

2016-09-02 17:34:48 695

原创 【LeetCode-383】Ransom Note(C++)

题目要求:给出两个字符串,判断其中一个字符串可不可以由另一个字符串中的部分或全部字母组成。解题方法:与389题的思路一样,心情不好不想写思路,直接贴代码。class Solution {public: bool canConstruct(string ransomNote, string magazine) { int lc[26]={0}; fo

2016-09-02 17:12:09 607

原创 【LeetCode-389】Find the Difference(C++)

题目要求:给出两个字符串,已知这两个字符串之中只有一个字符不同,输出这个字符。解决方法:很简单的一道题目,心情不好不想写思路,直接贴代码。(我就是任性不服来打我)class Solution {public: char findTheDifference(string s, string t) { int lc[26]={0}; for(int i

2016-09-02 17:00:03 1082

空空如也

空空如也

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

TA关注的人

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