LeetCode
JinbaoSite
不忘初心,方得始终。
展开
-
LeetCode 1. Two Sum
题意给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 您可以假设每个输入都只有一个解决方案,而您可能不会使用相同的元素两次。解题思路两层for循环遍历所有情况,一旦找到符合的,就将下标取出。参考代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vect原创 2017-07-12 21:57:40 · 818 阅读 · 0 评论 -
LeetCode 202. Happy Number
题意幸福的数字是由以下过程定义的数字:从任何正整数开始,将数字替换为数字的平方和,并重复该过程,直到数字等于1(将保留在哪里),或者循环 一个不包括在内的循环的循环中,这个过程以1结尾的数字是快乐的数字。例如19是幸运数字 12+92=8282+22=6862+82=10012+02+02=11^2 + 9^2 = 82 \\8^2 + 2^2 = 68 \\6^2 + 8^2 = 100原创 2017-08-22 22:47:01 · 654 阅读 · 0 评论 -
LeetCode 204. Count Primes
题意求小于n的素数的个数解题思路素数的筛选法参考代码//javaclass Solution { public int countPrimes(int n) { if (n<2) return 0; boolean[] prime=new boolean[n+1]; prime[2]=true; for (int i=3;i<原创 2017-09-17 22:04:27 · 371 阅读 · 0 评论 -
LeetCode 69. Sqrt(x)
题意求x的平方根解题思路调用Math.sqrt()参考代码// javaclass Solution { public int mySqrt(int x) { return (int)Math.sqrt(x); }}原创 2017-09-17 22:07:32 · 398 阅读 · 0 评论 -
LeetCode 657. Judge Route Circle
题意机器人开始在(0,0)点,有一段指令,包括上下左右,判断它通过一段指令后是否回到了原点。解题思路模拟即可参考代码//javaclass Solution { public boolean judgeCircle(String moves) { int x=0,y=0; for (int i=0;i<moves.length();i++){原创 2017-09-12 22:44:41 · 827 阅读 · 0 评论 -
LeetCode 121. Best Time to Buy and Sell Stock
题意给你一个股票的数组,你选择某天买入,某天卖出,问最大可以赚多少,注意买入时间必须小于卖出时间。你也可以选择既不买入,也不卖出。解题思路从头到尾计算,遇到小的数就假设买入,每一天都假设为卖出,计算最大利润。参考代码//javaclass Solution { public int maxProfit(int[] prices) { int ans=0; i原创 2017-09-12 22:56:37 · 454 阅读 · 0 评论 -
LeetCode 191. Number of 1 Bits
1 题意求一个32位的无符号整数在二进制下有多少个12 解题思路两种办法,一种是迭代求出整数的二进制,但是如果无符号整数的值大于有符号的整数,那么将得到-1public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int a原创 2017-11-28 23:47:31 · 308 阅读 · 0 评论 -
LeetCode 3. Longest Substring Without Repeating Characters
题意找出字符串中的最长不含有重复字符的子串解题思路用另一个变量pre记录每个满足条件子串的开头下标,用一个变量i扫过整个字符串,将扫过地字符逐个加入原子串中,当变量i扫过的字符在原子串中出现过了,使得原子串不满足条件时,让pre跳到原字符处,使得新加入的字符依旧可以使得新子串满足条件,一直计算子串长度,当大于最长的时候,就更新值。参考代码//javapublic ...原创 2018-02-07 23:55:00 · 407 阅读 · 0 评论 -
LeetCode 6.Z字形变换
题意将字符串 “PAYPALISHIRING” 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = "PAYPALISH...原创 2018-04-24 23:29:56 · 454 阅读 · 0 评论 -
LeetCode 4. Median of Two Sorted Arrays
1 题意给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 ,找出这两个有序数组的中位数2 解题思路在nums1上的数通过二分找到这个数在nums2上的位置,两个位置相加即为合并数组的位置,同样nums2上的数也可以这样确定下来 不过注意数组上可能有同样的数存在,为了避免出现谁出现在谁之前的混乱情况,约定nums2上如果有nums1上相同的数,那么在合并数组时,num...原创 2018-05-23 19:48:57 · 348 阅读 · 0 评论 -
LeetCode 198.House Robber
题意你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。解题思路动态规划,状态转移方程为dp[i]=max(dp[i-2]+dp[i-3])+a[...原创 2018-06-28 23:01:46 · 296 阅读 · 0 评论 -
LeetCode 20.Valid Parentheses
题意给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。解题思路使用栈,不匹配入栈,匹配出栈,最后栈为空则字符串有效。参考代码class Solution { public int getType(S...原创 2018-06-28 23:08:30 · 318 阅读 · 0 评论 -
LeetCode 12. Integer to Roman
题意罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII,...原创 2018-06-28 23:13:02 · 322 阅读 · 0 评论 -
LeetCode 100. Same Tree
题意给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。解题思路对树进行前序遍历,并为每个空子树补充一个特殊字符,使得每个非叶子节点都有左右子树。参考代码/** * Definition for a binary tree node. * public class TreeNode { * int ...原创 2018-07-05 21:20:47 · 334 阅读 · 0 评论 -
Codeforces Round #429 (Div. 2) | B. Godsend
题意有一个数组a,两个人玩游戏,游戏规则是第一个人可以拿走数组中的一个子数组并且子数组的和必须是奇数,第二个人可以拿走数组中的一个子数组并且子数组的和必须是偶数。两个人轮流拿,如果谁不能拿,那这个人就输了。如果两个人都采用最好的策略,最后谁赢?解题思路如果整个数组和为奇数,那么第一个人肯定赢。 如果整个数组和为偶数,那么假设第一个人可以取出和为奇数,那么剩下的和还是奇数,所以还是第一个人赢,如果第原创 2017-08-19 17:26:15 · 570 阅读 · 0 评论 -
LeetCode 258. Add Digits
题意将一个数的所有位数加起来得到一个数,如果这个数是个位数就结束,否则继续加,直到是个位数。例如38->3+8=11->1+1=2,最终结果是2。 现在需要你不使用任何递归和循环来得到这个结果。解题思路我们可以发现一些规律 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 11 12原创 2017-08-04 23:42:30 · 750 阅读 · 0 评论 -
LeetCode 2. Add Two Numbers
题意将两个链表相加,如果某个值大于10,则向后进位。解题思路同时遍历两个链表。参考代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */原创 2017-07-13 20:48:20 · 804 阅读 · 0 评论 -
LeetCode 26. Remove Duplicates from Sorted Array
题意将一组排好序的数组去重,然后返回去重之后的数组大小。解题思路使用java中的Map参考代码// javapublic class Solution { public int removeDuplicates(int[] nums) { Map map = new HashMap(); int ans = 0; for (int i=0;i原创 2017-07-29 23:21:55 · 600 阅读 · 0 评论 -
LeetCode 21. Merge Two Sorted Lists
题意将两个排好序的链表合并在一起。解题思路同时遍历两个链表。参考代码// java/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public原创 2017-07-29 23:40:21 · 616 阅读 · 0 评论 -
LeetCode 461. Hamming Distance
题意求两个整数在二进制下有多少位不同解题思路对两个整数同时进行模2求余数的方式获得二进制,在求得过程中计算。参考代码//javapublic class Solution { public int hammingDistance(int x, int y) { int ans = 0; while (!(x == 0 && y == 0)){原创 2017-07-31 23:53:03 · 672 阅读 · 0 评论 -
LeetCode 617. Merge Two Binary Trees
题意将两棵树上的值相加,合并到一棵树上。解题思路同时对两棵树进行递归遍历参考代码// java/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x)原创 2017-08-01 22:57:33 · 749 阅读 · 0 评论 -
LeetCode 561. Array Partition I
题意将一个2n大小的数组分成n组,(a1,b1),(a2,b2),...,(an,bn)(a_1,b_1),(a_2,b_2),...,(a_n,b_n),求 ∑ni=1min(a1,b1)\sum_{i=1}^{n} min(a_1,b_1)的最大值。解题思路将2n大小的数组进行排序,按照(a0,a1),(a2,a3),...,(a2n−2,a2n−1)(a_0,a_1),(a_2,a_3),.原创 2017-08-02 22:52:52 · 891 阅读 · 0 评论 -
LeetCode 344. Reverse String
题意将一个字符串反转。解题思路存为StringBuffer后反转,在转为String参考代码// javapublic class Solution { public String reverseString(String s) { return new StringBuffer(s).reverse().toString(); }}原创 2017-08-03 22:38:47 · 713 阅读 · 0 评论 -
LeetCode 67. Add Binary
题意两个二进制字符串的加法解题思路模拟加法参考代码// javapublic class Solution { public String addBinary(String a, String b) { String ans = ""; int left = 0; for (int i=a.length()-1,j=b.length()-1;原创 2017-08-17 23:31:56 · 373 阅读 · 0 评论 -
LeetCode 136. Single Number
题意在一个数组中,除了一个数出现一次,其余的数都出现两次,请你找出这个数。解题思路将整个数组异或。参考代码//javaclass Solution { public int singleNumber(int[] nums) { int ans = nums[0]; for (int i = 1; i < nums.length; i++)原创 2017-08-18 22:48:33 · 333 阅读 · 0 评论 -
LeetCode 476. Number Complement
题意求一个数在二进制下的反码解题思路求出刚好大于等于n的2次方数,然后用这个2次方数减去n即可参考代码//javapublic class Solution { public int findComplement(int num) { int x = 1; while (x<=num){ x *= 2; }原创 2017-08-16 22:56:59 · 415 阅读 · 0 评论 -
LeetCode 7. Reverse Integer
题意将一个int整数反转。 Example1: x = 123, return 321 Example2: x = -123, return -321 如果反转之后的数超出int范围,则返回0;解题思路采用迭代的方式,逆序获得反转数,然后对int的最大值,最小值进行判断; Java中int的最大值:Integer.MAX_VALUE Java中int的最小值:Integer.MIN_VAL原创 2017-07-27 22:32:27 · 520 阅读 · 0 评论 -
LeetCode 9. Palindrome Number
题意判断一个数是不是回文数解题思路1.负数没有回文数 2.一个整数的反转数可能会超出int范围参考代码public class Solution { public boolean isPalindrome(int x) { if (x < 0) return false; long y = 0, tmp = x; while (x != 0)原创 2017-07-27 22:40:22 · 695 阅读 · 0 评论 -
LeetCode 371. Sum of Two Integers
题意在不适用+、-的情况下计算a+b。解题思路a&b可以得到进位信息。 a^b可以得到不进位情况下的a+b。 所以模拟一下进位就好。参考代码// javapublic class Solution { public int getSum(int a, int b) { while (true){ int tempa = (a & b) << 1;原创 2017-08-12 20:32:16 · 293 阅读 · 0 评论 -
LeetCode 98. Validate Binary Search Tree
题意给定一个二叉树,判断其是否是一个有效的二叉搜索树。一个二叉搜索树具有如下特征: (1)节点的左子树只包含小于当前节点的数。 (2)节点的右子树只包含大于当前节点的数。 (3)所有左子树和右子树自身必须也是二叉搜索树。解题思路对于二叉搜索树,其中序遍历得到的是有序的序列。所以求二叉搜索树的中序遍历,判断序列是否有序就行了。参考代码/** * Definition ...原创 2018-07-05 22:02:54 · 334 阅读 · 0 评论