LeetCode
Tom Hardy
关注计算机视觉、机器学习、深度学习,公众号【3D视觉工坊】【计算机视觉工坊】
展开
-
给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度
题目介绍给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。输入描述:输入为两行字符串(可能包含空格),长度均小于等于50.输出描述:输出为一个整数,表示最长公共连续子串的长度。输入例子1:abcdeabgde输出例子1:2源代码#include<iostream>#include<algorithm> us...原创 2019-08-01 22:02:59 · 3826 阅读 · 0 评论 -
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路对二进制中的每一个数字进行查询,看是否为1,并对判断后的二进制串进行左移操作,直到所有二进制串中所有的数字被遍历。源代码class Solution {public: int NumberOf1(int n) { int count=0; uns...原创 2019-04-20 21:22:38 · 390 阅读 · 0 评论 -
leetcode之前K个高频元素
题目介绍给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组...原创 2019-04-12 16:21:56 · 205 阅读 · 0 评论 -
leetcode之四数相加
题目介绍给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在−228-2^{28}−228~ 228−12^{28}-1228−1之间,最终结果不会超过 231−1...原创 2019-04-12 15:26:14 · 604 阅读 · 0 评论 -
leetcode之无重复字符的最长子串
题目介绍给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 ...原创 2019-04-12 14:41:30 · 122 阅读 · 0 评论 -
leetcode之旋转链表
题目介绍给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4-&...原创 2019-04-12 13:54:15 · 158 阅读 · 0 评论 -
leetcode之移动零
题目说明给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1、必须在原数组上操作,不能拷贝额外的数组。2、尽量减少操作次数。题目分析典型的在原数组上进行修改移动数据,可以记录下0在某个数之前的个数,然后对该数向前移动指定个数位置,并用该数的值覆盖原来位置上...原创 2019-04-12 12:43:43 · 247 阅读 · 0 评论 -
leetcode之删除排序数组中的重复项
题目介绍给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2...原创 2019-04-12 12:10:09 · 110 阅读 · 0 评论 -
leetcode之杨辉三角
题目介绍给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]题目分析其实这个很简单,只需要建立起对应行数的vector,每个vector中的元素值是除了第一行外,两端...原创 2019-04-12 09:54:58 · 177 阅读 · 0 评论 -
leetcode之逆波兰表达式
题目介绍根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示...原创 2019-04-10 20:28:35 · 365 阅读 · 0 评论 -
leetcode之每日温度
题目介绍根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请输入 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的...原创 2019-04-10 20:03:13 · 225 阅读 · 0 评论 -
leetcode之有效的括号
题目说明给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 ...原创 2019-04-10 19:10:51 · 135 阅读 · 0 评论 -
leetcode之二叉树的中序遍历
题目介绍给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]思路分析可以使用递归算法依次遍历左节点、根节点、右节点,具体代码如下所示:/** * Definition for a binary tree node. * struct TreeNode { * in...原创 2019-04-10 21:32:12 · 208 阅读 · 0 评论 -
回旋镖的数量
题目要求给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0...原创 2019-04-05 20:26:01 · 369 阅读 · 0 评论 -
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
题目介绍输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目分析其实就是两个链表进行合并,如果有一个链表为空,则直接返回另外一个链表;否则就对两个链表的每个元素进行大侠判断,建立一个新的合并链表,把元素依次放进去,直到一个链表为空,这时把另外一个链表的剩余部分添加到合并链表的尾部即可。源代码注意里面使用了递归。。。/*struct List...原创 2019-04-23 10:27:38 · 819 阅读 · 0 评论 -
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
源代码/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<...原创 2019-04-18 14:42:45 · 542 阅读 · 0 评论 -
最大矩形面积(C++实现)
题目介绍给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。输入描述:输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)输出描述:输出一...原创 2019-08-01 20:45:34 · 6063 阅读 · 0 评论 -
非递归方式对二叉树进行前序、中序、后序遍历(C++实现)
前言二叉树的遍历在面试中非常常见,大多数同学都可以写出其递归遍历方式,然而真正有难度的是非递归的遍历方式,自己在面试的时候也遇到过这种情况,下面来分享下自己实现的三种非递归遍历二叉树的源代码~源代码首先对树节点进行定义:struct TreeNode{ int val; TreeNode* left; TreeNode* right;};先序遍历://树的非递归方式进行先序...原创 2019-08-01 14:35:12 · 1082 阅读 · 0 评论 -
两个大数之间的乘积计算,string1="123456789...76",string2="23456...8957",求模拟计算机计算这两个数字的乘积。(C++实现)
1、题目分析其实只要知道了具体的乘法运算法则即可写出这个实现,自己刚开始写的时候也是一头雾水,不过现在缕清了就好很多了~常规的两个乘法运算,比如123和456,其实是先用第一个数的3和456分别作乘法运算,然后使用2并错一位和456进行乘法运算,依此类推,并把结果相加进位即可,详细思路见源代码2、源代码#include<stdio.h>#include<string>...原创 2019-07-31 21:05:27 · 488 阅读 · 0 评论 -
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后...原创 2019-07-22 13:29:35 · 4855 阅读 · 2 评论 -
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。题目分析这时一个很典型的动态规划题目,数组不一定是有序的,而且连续子序列中的符号也不一定一致,这是两点需要注意的,详细思路请见源代码。源代码class Solution {public: int maxProduct(vector<int>& nums) ...原创 2019-07-22 11:59:11 · 3555 阅读 · 0 评论 -
堆排序(C++实现,非常简洁明了)
#include<iostream>#include<vector>using namespace std;//i代表当前节点,n代表总的数量,这里是在不断的交换//这里最终建立的是小根堆,最小值往上冒void change_smallest(vector<int> &nums,int len,int i){ int smallest =...原创 2019-08-02 21:54:18 · 1244 阅读 · 2 评论 -
最长回文子串问题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"题目分析其实,这道题的解法有多种,包括暴力解法、动态规划、中心扩展法等,在这里,只讲述中心扩展法,剩下的几种办法,大家可以自行百度。中心扩展法的基...原创 2019-07-21 12:14:31 · 3003 阅读 · 0 评论 -
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。题目分析这个其实就是一个简单的数字反转,但是需要注意,反转后的数据,有可能大于int最大值,小于int的最小值,如果溢出,则返回0。详细思路见源代码源代码class Solution {public: int reverse(int x) { long int res=0;...原创 2019-07-20 23:13:25 · 5040 阅读 · 0 评论 -
3sum问题:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
问题描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。问题分析基本思路就是先对数组排序,顺序选择一个数字,然后使用左右指针,依次对剩下数据进行遍历,考虑到结果会有重复,所以,要注意如何去重,详细思路请见源代码。源代码class Solution {public: ...原创 2019-07-20 20:14:02 · 4931 阅读 · 0 评论 -
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
题目介绍给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。题目分析通过建立一...原创 2019-07-29 15:31:52 · 2990 阅读 · 0 评论 -
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。(C++实现)
题目介绍给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。题目分析典型的快慢指针系列,不过需要注意边界条件,详细思路见源码源代码/** * Definition ...原创 2019-07-29 08:53:55 · 1364 阅读 · 1 评论 -
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示,,,
题目介绍给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-07-18 18:38:56 · 967 阅读 · 2 评论 -
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大
题目描述给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)输入描述无序整数数组A[n]输出描述满足条件的最大乘积示例1:示例1输入3 4 1 2输出24源代码#include<vector>#include<iostream>#include <algorit...原创 2019-04-18 16:02:30 · 2507 阅读 · 4 评论 -
柱状图之最大矩形面积
介绍给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。输入输入包括两行,第一行包含一个整数n(1 ≤ n ≤ 10000)第二行包括n个整数,表示h数组中的每个值,h_i(1 ≤ h_i ≤ 1,000,000)输出描述输出一个整数,表示最大...原创 2019-03-31 14:12:23 · 835 阅读 · 0 评论 -
递归和循环两种方式求解连续数的相加
介绍如果我们需要多次地重复计算相同的问题,则通常可以选择递归和循环两种方法。比如计算1+2+3+…+n递归方法int add_num(int n){ return n<=0?0:n+add_num(n-1)}循环方法int add_num(int n){ int result=0; for(int i=1;i<=n;i++) ...原创 2019-03-20 19:18:27 · 902 阅读 · 0 评论 -
LeetCode之根据字符出现频率排序
介绍:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的转载 2018-12-06 19:11:11 · 763 阅读 · 0 评论 -
LeetCode之同构字符串
介绍:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例2:输入: s = "foo", t = "bar"输出: false...原创 2018-12-06 17:07:47 · 316 阅读 · 0 评论 -
LeetCode之有效的字母异位词
介绍:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例2:输入: s = "rat", t = "car"输出: false说明: 你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unic原创 2018-12-06 15:52:39 · 170 阅读 · 0 评论 -
LeetCode之两个数组的交集
介绍:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明: - 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 - 我们可以不考虑输出结果的顺序。主...转载 2018-12-06 14:58:28 · 174 阅读 · 0 评论 -
LeetCode之存在重复元素
描述:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true源代码:#include<iostream...原创 2018-12-04 21:32:58 · 400 阅读 · 0 评论 -
LeetCode之快乐数
介绍:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:12+92=821^2 + 9^2 = 8212+92=8282+22=688^2 + 2^2 = 68...原创 2018-12-04 20:52:41 · 178 阅读 · 0 评论 -
LeetCode之两个数组的交集
介绍:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。源代码:#include&lt;iostream...原创 2018-12-04 19:40:45 · 544 阅读 · 0 评论 -
LeetCode之反转字符串中的单词
要求:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。源代码:#include<iostream>#include...原创 2018-12-04 18:22:44 · 161 阅读 · 0 评论 -
LeetCode之翻转字符串里的单词
主要要求:给定一个字符串,逐个翻转字符串中的每个单词。示例:输入: "the sky is blue",输出: "blue is sky the".说明:无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。源代码:#include<iostream>#incl...原创 2018-12-04 18:06:40 · 207 阅读 · 0 评论