LeetCode刷题
河流儿
这个作者很懒,什么都没留下…
展开
-
LeetCode50. 动态规划方法求阶乘
leetcode 50 pow(x, n)三种解决思路调用库函数暴力迭代分治法(本文方法)1, 2就不用说了, 第三种分治法,分治法本质上是一种动态规划方法,例如2的十次方求法可以先求 2的5次方, 再求2的2次方。 需要注意的是2的5次方和2的2次方不需要求2次,而是使用备忘录将求过的子问题进行记录,下一次求求解时直接使用。count变量和前三个函数式为了打印递归层次帮助理解的var count = 0func printIndent(){ fmt.Printf(".原创 2021-07-31 21:06:25 · 2495 阅读 · 1 评论 -
打印从1到最大的n位数
这个问题陷阱在于没有规定n位数的位数,也就是说这个n可能是10000,这样的话,int和long long都无法存储,所以采用string字符串来存储这个数字, 第二个陷阱是在打印字符串的时候不能从头到尾全打印,要从第一个非零的数开始打印。类声明如下:#pragma once#include<iostream>using namespace std;class printN...原创 2018-12-10 16:09:33 · 414 阅读 · 0 评论 -
LeetCode之443. 压缩字符串
443 题是简单题,用C#,java,python等高级语言来说很简单,但是我非要用不擅长的C++来解,而且还要用O(1)空间复杂度,其实即使这样也不难,可是我C++比较菜,这道题试了好几个小时,主要问题在指针和迭代器的区别以及C++中各种数据类型的区别和联系上,幸运的是最后解出来了,而且显示战胜了100%的提交。不说了下面是我的代码思路:先让tmp等于整个字符,然后循环遍历vector,遇到和...原创 2018-11-30 13:51:57 · 475 阅读 · 0 评论 -
算法validWordSquare问题
给定一个单词序列,检查它是否构成一个有效单词广场。 一个有效的单词广场满足:如果第k行和第k列读取相同的字符串, 并且0≤k<max(numRows numColumns)。这个题的坑在0≤k<max(numRows numColumns), 先补全成方阵再比较。class Solution: """ @param words: a lis原创 2018-07-04 13:42:58 · 205 阅读 · 0 评论 -
LeetCode之283. Move Zeroes
Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.Example:Input: [0,1,0,3,12] Output: [1,3,12,0,0] Note:You m...原创 2018-06-19 12:00:53 · 131 阅读 · 0 评论 -
LeetCode之102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example: Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 ...原创 2018-06-25 17:24:04 · 155 阅读 · 0 评论 -
LeetCode之1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same ...原创 2018-06-20 18:06:25 · 140 阅读 · 0 评论 -
LeetCode之687. Longest Univalue Path
本题目的是在一棵二叉树中寻找彼此连接的连续节点的最长长度,返回连接的边数,提示: 连续节点可经过根节点也可以不经过根节点思路: 从叶子节点开始寻找左右子节点和本身相同的节点, 若全相同则加1, 使用递归。 C# 代码/** * Definition for a binary tree node. * public class TreeNode { * public in...原创 2018-05-03 14:42:11 · 165 阅读 · 0 评论 -
LeetCode之78. Subsets
78题目有很多种解法,但是此处按照博客目的,先只列出二进制位运算的答案。 特别需要注意的是,引用类型的浅拷贝*对于引用类型的拷贝问题,由于语言差异,此处使用的是重新申明而不是深拷贝的额方法。Python 3 代码class Solution(object): def subsets(self, nums): """ :type num...原创 2018-03-06 14:55:55 · 114 阅读 · 0 评论 -
LeetCode之268. Missing Number
解法1. 第268题不用位运算解决起来十分的简答,由于是从0开始的数,因此排序之后跟它的索引对比即可解法11.1 Python 3 代码class Solution: def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ ...原创 2018-03-05 15:14:55 · 128 阅读 · 0 评论 -
LeetCode之136. Single Number
LeetCode 上的位运算的题目是算法最有意思的地方,我会接连好几篇博客都来写关于位运算的题目 (第136题的核心点在于异或操作,两个相同的整数异或操作之后得到的值是0,可以借助这个原理,将数组中的元素全部异或操作,得到的结果就是那个单个元素Python 3代码)class Solution(object): def singleNumber(self, nums):...原创 2018-03-05 13:04:46 · 117 阅读 · 0 评论 -
LeetCode之2. Add Two Numbers
第2题是两个链表倒序来表示两个整数,输出一个链表倒序表示两整数的和,显然把链表转换为整数再直接求解的办法是不行的,可以采取进位的方法,受371题启发,进行加法的时候包括一个进位和一个赋值位,循环相加即可。而且由于链表对整数倒序排列,所以这反而使得进位更加方便。 有一个小细节要注意一下,每次如果没有进位,要把前一次进位的1重新置为0,否则如果遇到两次不进行的情况那就错乱。以下是代码实现C#...原创 2018-03-10 14:09:51 · 141 阅读 · 0 评论 -
LeetCode之23. Merge k Sorted Lists
23题是一个综合性的题目,用前面做过的简单题目的累加就可以解出这一道题了,这道题最简单的办法是分治法,两两排序,最后再合并到一起,但是由于输入的是一个数组,所以此处不能用递归,21题可以作为它的子函数。(分治法)C# 代码/** * Definition for singly-linked list. * public class ListNode { * publi...原创 2018-03-09 18:16:52 · 111 阅读 · 0 评论 -
LeetCode之561. Array Partition I
这是一道算法题,要达到题目的目的,只需要知道一点,就是将数组从小达到排序,从第一个元素开始,隔一个取一个点,再将取出来的这些元素相加即可。1. Python 3 代码class Solution: def arrayPairSum(self, nums): """ :type nums: List[int] :rtype: i...原创 2018-03-01 20:56:19 · 124 阅读 · 0 评论 -
LeetCode之657. Judge Route Circle
原理很简单,正好走了一圈的时候,上下抵消,左右抵消,所以只需要统计上下和左右的步数,不能抵消则不是一个圈1. Python 3 代码class Solution: def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ ...原创 2018-03-01 16:55:21 · 196 阅读 · 0 评论 -
LeetCode之21. Merge Two Sorted Lists
这道题与数组中的归并排序问题,非常类似,只是换了数据类型,有递归和迭代两种方法.1. 方法1 (递归)1.1 C# 代码/** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNode next; * ...原创 2018-03-08 16:00:59 · 120 阅读 · 0 评论 -
LeetCode之461. Hamming Distance
1. C # 代码(值得注意的是:2^31,超出了int32的限制,所以求最大长度的时候要强制转为int64)public class Solution { public int HammingDistance(int x, int y) { int maxLen = Convert.ToString((System.I...原创 2018-02-28 14:57:23 · 150 阅读 · 0 评论 -
LeetCode之771:Jewels and Stones
1. 解法1(遍历比较,时间复杂度O(J*S),空间复杂度O(1))1.1 C#代码public class Solution { public int NumJewelsInStones(string J, string S) { int Jlen = J.Length; int Sle...原创 2018-02-28 13:51:23 · 359 阅读 · 0 评论