LeetCode
xueying_2017
开通的日子是2017/9/26
还在读大学 对于代码还是菜鸟
想要把自己学习的一点一点的写出来
作为总结 作为记录
展开
-
清华机试真题
题目感觉比较模式,中规中矩,但是很容易超时或者是有些复杂情况覆盖不到进制转换题目描述将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入描述:多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出描述:每行输出对应的二进制数。示例1 输入复制0138输出复制0111...原创 2019-08-28 10:31:04 · 1429 阅读 · 0 评论 -
leetcode-cn | 链表
复制带随机指针的链表给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 ...原创 2019-05-31 22:39:10 · 159 阅读 · 0 评论 -
leetcode-cn | 堆栈与队列
最小堆设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...原创 2019-05-12 19:31:18 · 237 阅读 · 0 评论 -
C++ <algorithm>库中的堆
1.建堆对于堆的操作是一些算法,而不是单独的数据结构,堆是对vector进行的操作。建堆使用 make_heap()函数建堆之前引入库#include<stdio.h>#include<algorithm> 堆算法#include<functional> 堆算法中要用的到greater函数using namespace std...原创 2019-05-13 20:52:38 · 763 阅读 · 0 评论 -
leetcode-cn | 数组
乘积最大子序列给定一个整数数组 nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。使用动态规划的方法,因为数组中由负数的出现,所以要考虑负负得正的情况,...原创 2019-03-26 22:19:34 · 338 阅读 · 0 评论 -
C++语法知识
因为种种原因开始使用 C++ 刷 leetcode ,在此记录刷题过程中不断回忆的 C++ 知识点。vector的使用1.创建一维的vectorvector<int> v; //创建容器v,未指定容量vector<int> v(10); //创建容量为10的容器vector<int> v(10,2); //创建容量为...原创 2019-03-22 22:32:33 · 403 阅读 · 0 评论 -
leetcode-cn | 字符串
验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseclass Solution { public boo...原创 2019-03-12 18:44:53 · 394 阅读 · 0 评论 -
leetcode-cn | 开始之前
只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4通过位运算来得到结果class Solution { public int singleNum...原创 2019-03-12 18:42:01 · 535 阅读 · 0 评论 -
LeetCode |416. Partition Equal Subset Sum
Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.Note:Each of the array eleme...原创 2018-09-28 09:28:47 · 219 阅读 · 0 评论 -
LeetCode | 139. Word Break(DP)
Pick OneGiven a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words.N...原创 2018-09-28 09:27:40 · 116 阅读 · 0 评论 -
Bit Manipulation 位操作
注意的几点:java中计算一个数表示成二进制后中1的个数 调用函数 Integer.countBit(n) 位操作包括:与,或,非,同或,异或,左移位,右移位 位操作是将数转换为二进制后分别对每一位做的操作,不是对单独的一个数(int)做的操作,在做题的时候不要被混淆蒙蔽了。位操作中只有0和1。 位操作的优先级较低,比如说要小于 == ,因此,使用的时候尽量加括号使用 a&0=...原创 2018-10-04 17:19:07 · 220 阅读 · 0 评论 -
LeetCode|647. Palindromic Substrings
Given a string, your task is to count how many palindromic substrings in this string.The substrings with different start indexes or end indexes are counted as different substrings even they consist ...原创 2018-09-24 21:06:14 · 191 阅读 · 0 评论 -
LeetCode|300. Longest Increasing Subsequence
Given an unsorted array of integers, find the length of longest increasing subsequence.Example:Input: [10,9,2,5,3,7,101,18]Output: 4 Explanation: The longest increasing subsequence is [2,3,7,10...原创 2018-09-24 20:47:19 · 215 阅读 · 0 评论 -
Dynamic programming 动态规划
动态规划通过把一个复杂问题分阶段进行简化,逐步简化为多个简单的小问题。大事化小,小事化了。动态规划问题中包含三个重要概念最优子结构(理解为对问题合理拆分的第一步) 边界(最简单不用计算就可以得出结果的那一步) 状态转移公式(每一阶段和下一阶段的关系)对于动态规划的讲解:https://www.sohu.com/a/153858619_466939#comment_area动态规划...原创 2018-08-28 11:15:44 · 367 阅读 · 0 评论 -
leetcode-cn | 动态规划
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \...原创 2019-06-09 20:43:15 · 679 阅读 · 0 评论 -
C++ 排序算法
#include<vector>#include<iostream>using namespace std;//从小到大排序 //冒泡排序 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来 void bubble_sort(vector<int> &nums){ //要...原创 2019-06-25 17:12:03 · 134 阅读 · 0 评论 -
leetcode - cn | 模拟面试
快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + ...原创 2019-08-26 20:25:27 · 268 阅读 · 0 评论 -
动态规划 VS 记忆化搜索
记忆化搜素=搜索的形式+动态规划的思想 动态规划适用于:要使用的子问题的值已经被确定,不会再被更新的情况 适合动态规划的都适合记忆化搜索,反之不然 思想:在搜索过程中,会有很多重复计算,如果我们能记录一些状态的答案,就可以减少重复搜索量 适用范围:解决重复计算,不适合单纯生成一个走步方案,而是适合生成一个走步方案的代价 核心实现 一个表记录已经存储下的搜索结果 状态存储 如果状...原创 2019-08-16 19:50:22 · 452 阅读 · 0 评论 -
leetcode - cn | 图论
岛屿数量给定一个由'1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011输出: 3思路为深度优先搜索,搜索与一...原创 2019-08-21 09:43:49 · 505 阅读 · 0 评论 -
leetcode - cn | 数学&位运算
只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4使用位运算符实现| 或 只要有一个1就是1,全为0为0& 与 只...原创 2019-08-23 22:03:45 · 355 阅读 · 0 评论 -
二叉树遍历 | 递归 & 非递归
中序遍历一直遍历左子树到空,然后转移到右子树void inorder(TreeNode *root,vector<int> &path){ stack<TreeNode*> s; TreeNode* p=root; while(p||!s.empty()){ //节点不为空时,或者栈不为空的情况下继续执行循环体 /...原创 2019-08-14 17:18:45 · 159 阅读 · 0 评论 -
桶排序、基数排序、计数排序
参考链接:https://blog.csdn.net/qq_19446965/article/details/81517552桶排序首先求出最大值最小值,把此区间划分为k个区间(即k个桶),再分别对桶内元素进行排序,将桶内元素合并得到排序结果。 假设数据均匀分布,每个桶内元素为 n/k 个,并对桶内元素通过快排排序,每次排序复杂度为O(n/k log(n/k)),总的时间复杂度为O(n)...原创 2019-08-08 11:33:13 · 151 阅读 · 0 评论 -
王道——机试指南
计算字符串的结果#include<iostream>#include<stack>#include<string>#include<sstream>#include<vector>#include<stdlib.h>using namespace std;int main(){ //一个字符一个字符的怎...原创 2019-07-30 21:02:13 · 2124 阅读 · 0 评论 -
leetcode - cn | 排序与检索
最大数给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。bool comp(string a,string b){ //从大到小 string ab=a+b; ...原创 2019-07-21 13:05:47 · 158 阅读 · 0 评论 -
树状数组
参考链接为:https://blog.csdn.net/Small_Orange_glory/article/details/81290634https://blog.csdn.net/int64Ago/article/details/7429868C[i]代表子树的叶子节点的权值之和C[1]=A[1]C[2]=A[1]+A[2]C[3]=A[3]C[4]=A[1]...原创 2019-07-29 19:14:06 · 94 阅读 · 0 评论 -
字符串匹配——Sunday算法
字符串匹配算法中最先学的算法是暴力算法,紧接着是KMP算法,到现在依旧没有理解next到底是怎么求的寻找到了一种新的算法——Sunday算法,比KMP算法更快匹配时关注匹配主串中参与匹配的最后一位字符的下一位字符。参考:https://www.jianshu.com/p/2e6eb7386cd3?utm_campaign=maleskine&utm_content=note...原创 2019-07-17 16:56:26 · 115 阅读 · 0 评论 -
leetcode - cn | 树
二叉搜索树它是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上的所有节点的值均大于它的根节点的值;它的左右子树也分别是二叉搜索树。二叉搜索树中第K小的元素给定一个二叉搜索树,编写一个函数kthSmallest来查找其中第k个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索...原创 2019-06-24 14:07:05 · 239 阅读 · 0 评论 -
leetcode - cn | 哈希与映射
STL中map的使用方法#include<map>#include<string>using namespace std;map<string,string> namemap; //定义namemap["aaa"]="bbbb"; //增加namemap["ccc"]="dddd";if(namemap.find("aaa")...原创 2019-06-24 09:49:58 · 132 阅读 · 0 评论 -
北大百炼
护林员盖房子总时间限制:1000ms内存限制:65536kB描述在一片保护林中,护林员想要盖一座房子来居住,但他不能砍伐任何树木。现在请你帮他计算:保护林中所能用来盖房子的矩形空地的最大面积。输入保护林用一个二维矩阵来表示,长宽都不超过20(即<=20)。第一行是两个正整数m,n,表示矩阵有m行n列。然后是m行,每行n个整数,用1代表树木,用0表示空地。...原创 2019-06-25 19:49:37 · 1838 阅读 · 4 评论 -
leetcode 分治算法&&多数投票算法|169. Majority Element
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element alwa...原创 2018-08-17 15:38:14 · 631 阅读 · 0 评论 -
leetcode 多数投票算法|229. Majority Element II
https://blog.csdn.net/xueying_2017/article/details/81778474Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.Note: The algorithm should run in linear time and...原创 2018-08-19 15:15:39 · 256 阅读 · 0 评论 -
leetcode|17. Letter Combinations of a Phone Number
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone buttons) is given...原创 2018-05-27 22:39:20 · 182 阅读 · 0 评论 -
leetcode|80. Remove Duplicates from Sorted Array II
Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice and return the new length.Do not allocate extra space for another array, you must do this by modif...原创 2018-05-26 15:01:20 · 103 阅读 · 0 评论 -
leetcode|26. Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modifying...原创 2018-05-26 14:43:01 · 105 阅读 · 0 评论 -
leetcode|27. Remove Element
Given an array nums and a value val, remove all instances of that value in-place and return the new length.Do not allocate extra space for another array, you must do this by modifying the input array ...原创 2018-05-26 14:27:18 · 106 阅读 · 0 评论 -
leetcode|203. Remove Linked List Elements
Remove all elements from a linked list of integers that have value val.Example:Input: 1->2->6->3->4->5->6, val = 6Output: 1->2->3->4->5正常的思路,一次通过啦。/** * Definition for...原创 2018-05-26 14:05:19 · 112 阅读 · 0 评论 -
leetcode|19. Remove Nth Node From End of List
Given a linked list, remove the n-th node from the end of list and return its head.Example:Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, the li...原创 2018-05-26 11:01:53 · 139 阅读 · 0 评论 -
leetcode|16. 3Sum Closest
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would ...原创 2018-04-14 10:52:16 · 225 阅读 · 1 评论 -
leetcode|15. 3Sum
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:The solution set must not contain ...原创 2018-04-14 09:44:12 · 128 阅读 · 1 评论 -
leetcode|11. Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two ...原创 2018-04-13 20:43:38 · 163 阅读 · 3 评论