自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟

too difficult

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

原创 LeetCode 3. Longest Substring Without Repeating Characters

描述给出一个字符串,求出不包含重复字符的最长字串解决从头至尾遍历,记录最长长度,利用map做标记。class Solution {public: int lengthOfLongestSubstring(string s) { map<char, int> cnt; int l = 0, r = 0; int max_lenth = 0;

2016-07-28 19:45:47 251

原创 LeetCode 2. Add Two Numbers

描述给出两个数,分别是用链表存储,求两个数之和。解决把这个题目当成数组来思考即可。当一个链表为空的时候,就需要new一个存储空间进行连接,注意进位的判断。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)

2016-07-28 17:07:20 300

原创 LeetCode 50. Pow(x, n)

描述实现pow这个函数解决利用快速幂,但是注意把右移改成 n /= 2。开始我一直用n >>= 1,但是一直超时,发现测试样例用到了最小的int整数-2147483648, 思考了觉得是,如果用 n>>= 1, 计算机会把负数转换成补码的形式,然后就会一直死循环。class Solution {public: double myPow(double x, int n) {

2016-07-27 13:35:12 310

原创 LeetCode 292. Nim Game

描述给出一堆石子,每次取数1~3颗,最后取的人获胜,问获胜者是谁解决class Solution {public: bool canWinNim(int n) { if (n % 4){ return true; } return false; }};

2016-07-26 13:49:22 246

原创 LeetCode 338. Counting Bits

描述给出一个数,求从0到这个数每个数包含有多少个2进制1.解决动态规划的思想。 状态定义:res[i]表示第i个数有多少个1。 状态转移方程: res[i] = res[i / 2] + (i & 1)class Solution {public: vector<int> countBits(int num) { vector<int> res(num + 1, 0)

2016-07-25 18:22:20 248

原创 LeetCode 9. Palindrome Number

描述给出一个数字,判断它是否是回文。解决数学问题class Solution {public: bool isPalindrome(int x) { if (x < 0) return false; int tmp = x; int res = 0; while (x){ res

2016-07-25 18:11:52 257

原创 LeetCode 13. Roman to Integer

描述给出一个罗马数字,让你把它转换成正常的十进制数解决关键是要清楚罗马数字转换成10进制数的运算法则。当一个数比它右边的数大的时候,就加上这两个数;当一个数比它右边的数小的时候,加上右边的那个数减去当前数的差。 class Solution {public: int romanToInt(string s) { unordered_map<char, int> arr;

2016-07-24 16:28:58 292

原创 LeetCode 326. Power of Three

描述判断一个数是不是3的幂解决利用对数的运算法则即可解决。开始的时候用以e为底的对数,结果WA了,换成以10为底的对数就过了。class Solution {public: bool isPowerOfThree(int n) { return (int)(log10(n) / log10(3)) == log10(n) / log10(3); }};

2016-07-24 16:11:29 240

原创 LeetCode 1. Two Sum

描述给出一个数组和一个目标值,求出数组中两个数的序列,使得这两个数加起来的和为目标值解决利用multimap存数组中值的位置,然后利用sort排序,从左到右遍历查找,利用lower_bound(),复杂度为O(nlgn).class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { v

2016-07-22 16:36:28 243

原创 LeetCode 223. Rectangle Area

描述给出两个矩形的对角顶点坐标,求出两个矩形的直线所购成的面积。解决判断两个矩形的位置关系,求出两个矩形的面积和,再用面积和减去两矩形的公共部分即可。class Solution {public: int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { int h1 = min(D,

2016-07-22 16:02:23 350

原创 LeetCode 122. Best Time to Buy and Sell Stock II

描述给出一支股票在每天的价格,求在允许多次交易的情况下可以获得的最大收益解决记录当前天的最小值,遇到比当前天价格高的就卖出,然后重新买入,买入之前先卖出。class Solution {public: int maxProfit(vector<int>& prices) { int lenth = prices.size(); int tmp = 0x3f3

2016-07-21 18:26:49 282

原创 LeetCode 242. Valid Anagram

描述给出两个字符串,判断这两个字符串是不是由相同数目的相同字符构成的解决方法一利用sort排序,然后再判断两个字符串是否相等。class Solution {public: bool isAnagram(string s, string t) { sort(s.begin(), s.end()); sort(t.begin(), t.end()); retur

2016-07-21 18:10:13 273

原创 LeetCode 168. Excel Sheet Column Title

描述给出一个10进制的数,求26进制的字符串解决因为题目中的A是从1开始的,所以注意操作数应为n-1,算法和十进制转换成2进制的操作是一样的。class Solution {public: string convertToTitle(int n) { string res; while (n != 0){ int tmp = (n -

2016-07-21 17:50:19 301

原创 LeetCode 171. Excel Sheet Column Number

描述给出一个用26个英文组成的字符串,求它所代表的十进制数解决就是一个26进制的转换。class Solution {public: int titleToNumber(string s) { int lenth = s.size(); int res = 0; for (int i = 0; i < lenth; ++i){

2016-07-21 17:35:11 321

原创 LeetCode 35. Search Insert Position

描述给出一个有序数组,然后再给出一个数,问你这个数应该在该数组中的哪个位置解决二分判断。 - 首先因为数组有序,那么如果该数大于最后一个数,即该数的位置应该在数组的最后,否则的话就二分判断 - 因为该数应该是存在于数组中,就寻找该数的位置,如果二分得到符合的值就直接返回,否则就判断最后退出的位置的值的大小,如果退出位置对应的数值大于该目标值,则说明该目标值的位置应该放在当前位置,否则答案应该是当

2016-07-19 20:03:12 351

原创 二分模板

#include <iostream>#include <cstdio>using namespace std;int binary_search(int arr[], int k);int binary_search1(int arr[], int k);int main(){ int arr[] = {1,2,3,4,5}; int* arr1 = new int[4]

2016-07-19 14:20:00 343

原创 LeetCode 374. Guess Number Higher or Lower

描述给出一个数,让你猜这个数,有一个辅助函数guess()作判断,直接调用即可。解决二分判断。用 int m = (l + r) >> 1 就超时,然后换成了int m = l + (r - l) / 2 然后就过了// Forward declaration of guess API.// @param num, your guess// @return -1 if my number is

2016-07-19 13:51:54 308

原创 LeetCode 162. Find Peak Element

描述给出一个数组,找出一个索引,使得在该索引位置的值大于它的相邻元素。解决方法一比较蠢的办法,就是从头到尾遍历了class Solution {public: int findPeakElement(vector<int>& nums) { int lenth = nums.size(); if (lenth <= 1) return

2016-07-18 20:51:06 398

原创 LeetCode 347. Top K Frequent Elements

描述给出一个数组,就你求出出现次数最多的k个不同数字解决题目要求复杂度小于O(nlgn),如果用sort的话,最坏情况是O(n^2),利用堆就可以了,因为堆排序最差情况也是O(nlgn),而且对于堆,我们可以只存k个节点在堆中就好了。class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) {

2016-07-17 16:11:15 349

原创 LeetCode 121. Best Time to Buy and Sell Stock

描述给出连续几天股票的波动,问可以获得的最大收益解决首先要知道,股票是要先买入,然后再卖出的。比较暴力的就是O(n^2)遍历啦,但是可以用O(n)的方法,在遍历的过程中记录到当前位置最小的值,然后做减法进行比较统计就可以了。class Solution {public: int maxProfit(vector<int>& prices) { int lenth = pri

2016-07-11 13:15:14 401

原创 LeetCode 238. Product of Array Except Self

描述给出一个数组,求每个位置,不包含该数的乘积。要求复杂度为O(n)解决方法一先求出所有数的乘积,然后再做判断,主要有三种情况,0个0,1个0,大于等于2个0。(但是要用到除法,不知道为什么还是过了)。class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int lenth =

2016-07-09 22:33:38 264

原创 LeetCode 217. Contains Duplicate

描述给出一个数组,判断数组中是否有重复元素,若没有则返回false,有则返回true解决先排序,再O(n)遍历即可class Solution {public: bool containsDuplicate(vector<int>& nums) { int lenth = nums.size(); if (lenth == 0){ r

2016-07-09 11:19:07 307

原创 LeetCode 268. Missing Number

描述给定一个长度为n的数列,数列中是不同的0~n的数,找出少掉的一个数解决先等差数列求和,然后O(n)遍历,即可。beat93%class Solution {public: int missingNumber(vector<int>& nums) { int lenth = nums.size(); int sum = lenth * (1 + lenth

2016-07-07 12:21:43 256

原创 LeetCode 283. Move Zeroes

描述给你一个数组,要求把所有的0移到末尾,其它数的相对顺序不变。解决方案一 拷贝到另一个数组存储;方案二,直接用当前数组存。class Solution {public: void moveZeroes(vector<int>& nums) { int lenth = nums.size(); if (lenth == 0){ re

2016-07-07 12:08:54 263

原创 LeetCode 80. Remove Duplicates from Sorted Array II

描述给出一个数列,求出一个数列,使得其中重复元素的次数最多不超过2次,问这个数列的长度,并要求把该长度下的数存放在数列中。解决利用一个标志cnt,统计当前数在结果数列中出现的次数,遍历过去即可。O(n)class Solution {public: int removeDuplicates(vector<int>& nums) { int lenth = nums.size

2016-07-06 14:41:16 233

原创 LeetCode 26. Remove Duplicates from Sorted Array

描述给定一个有序数组,问互不相同的元素各有多少个,要求不能用额外的空间,结果数组中存在的结果都是不同的。解决两个索引,同时遍历,因为有序,直接可以通过大小比较得到结果。class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.empty()){ return

2016-07-05 13:47:52 231

原创 LeetCode 342. Power of Four

描述判断一个数是否是4的幂解决循环判断即可。4msclass Solution {public: bool isPowerOfFour(int num) { int tmp(num); while (num >= 4){ if (num % 4 != 0){ return false;

2016-07-04 15:00:16 247

原创 LeetCode 349. Intersection of Two Arrays && 350. Intersection of Two Arrays II

描述两道题目都是求交集,前者要求最后的结果集中只存在一个相同的值,后者要求尽结果集中应该有尽可能多的相同值(以共同值较少的数量为准)。解决349直接暴力遍历的,复杂度为O(n^2)。class Solution {public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { vector

2016-07-04 14:33:33 268

原创 LeetCode 371. Sum of Two Integers

问题求两个数的和,不能用“-”和“+”。解决方案用位运算求即可。class Solution {public: int getSum(int a, int b) { int ans; while (b){ ans = a ^ b; b = ((a & b) << 1); a = ans;

2016-07-04 12:35:38 443

空空如也

空空如也

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

TA关注的人

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