- 博客(12)
- 收藏
- 关注
原创 523. Continuous Subarray Sum
本题给出一个整数数组,里面的数都是非负整数,另外给出一个整数k,看该数组中是否有连续的子数组和为k或k的倍数。本题有两个需要注意的地方,一是当k为0的情况,二是子数组长度必须大于1.思路为用一个集合unsorderd_set来解决。当k为0时,数组中必须有两个连续的0,unsorderd_set中存放前缀数组和sum.当k不为0时,存放前缀数组和与k的余数,当余
2017-06-27 17:51:16
99
原创 227. Basic Calculator II
本题给出一个字符串,字符串中只有非负整数以及‘+’,‘-’,‘*’,‘/’四种运算符号,要求输出字符串的运算结果。该题有两个难点,一是整数的长度不一样,对于该点用字符串流解决。二是一个整数后的运算符号是‘*’,‘/’时,要先进行乘除运算,因此对于一个新的整数,用变量temp暂时存储。代码如下:int calculate(string s) { istringstre
2017-06-27 13:47:50
105
原创 263. Ugly Number
丑数是那些只能被2,3,5整除的数,1是特殊的丑数。给出一个数,判断是否为丑数。比较简单class Solution {public: bool isUgly(int num) { for (int i=2; i<6 && num; i++){ while (num % i == 0) n
2017-06-05 21:02:28
85
原创 260. Single Number III
题中给出一个容器vector,里面除了两个不同的数,其余所有的数都是成对存在,输出要求为一个容器vector,里面为这两个不同的数字。思路如下,相同的数字按位异或得到0,而不同的数字按位异或得到的数字二进制表示里有1.于是,先把所有的数字异或一次,得到一个数,因为所求的两个数不相同,所以,二进制表示中1所在的位置就是两个数字不同的位数。找到二进制表示右边开始第一个1的位置。
2017-06-05 15:57:16
97
原创 526.Beautiful Arrangement
本题的输入是一个整型数N,定义一个Beautiful Arrangement数列,这个数列由从1到N的N个数组成。对于BA数列中每个数k所在的位置i,都有k%i==0或者i%k==0,输入为BA的数列的排列方式共有多少种。对于这种类型的题,采用一种交换-递归的思想。class Solution {public: int count Arrangement(int
2017-05-18 14:34:03
90
原创 102.Binary Tree Level Order Traversal
这题首先给出树结构。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} *
2017-05-13 15:16:49
110
原创 53,Maximum Subarray
这题给出一个数组,让输出最大的连续子数组的和。数组的长度为N,应用动态规划的思想,依次计算从头至第1,2个元素...直至整个数组共N个数组的最大连续子数组的和。class Solution {public: int maxSubArray(vector& nums) { vectortemp(nums.size(),0); temp
2017-05-13 14:38:09
68
原创 127.Word Ladder
这道算法题,输入是两个word(string类型),begin和end.和一个string的集合wordDict(set),里面有不同的word(string),输出要求为一个从begin变换为end且每次只允许变动一个字母的最短变换长度。所有的word都有相同的长度,都是小写字母,且每次只允许变换一个字母。这道题,因为输入中有集合,考虑用BFS(广度优先搜索)的方法。广度
2017-05-08 15:09:14
113
原创 92.Reverse Linked List II
Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4,return 1->4->3->2->5->NULL.Note:Given m, n satisfy the followi
2017-03-31 16:16:20
89
原创 206.reversed linked list
本题是要逆置一个单链表。我想到了两种方法,第一种是加一个头结点的方法,第二种是不加头结点的方法。加头结点的方法如下class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* new_head = new ListNode(0); new_head -> next = h
2017-03-31 14:20:10
94
原创 数组和指针相关
char *p1 = "hello";char *p2 = "world";char *p3 = "a piece of cake";char *str[] = { p1, p2, p3 };cout << sizeof(*str[0]) << " " << typeid(str[0]).name() << " " << *(str[0] + 1) << endl;//typeid是类型c
2017-03-10 22:51:40
83
转载 关于数组和指针的测试
char*p1 = "hello"; char*p2 = "world"; char*p3 = "a piece of cake"; char*str[] = { p1, p2, p3 }; cout sizeof(*str[0]) " " typeid(str[0]).name() "
2017-03-10 22:50:23
119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人