自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 收藏
  • 关注

转载 全错排列

题目描述有n个小朋友,每个小朋友都有自己的座位。恰好每个小朋友都坐错座位的方式有多少种?n <= 66输入描述:第1行,一个自然数,表示小朋友的个数。输出描述:输出一个整数,表示符合条件的坐法有多少种?笔试遇到了, 错排公式: Dn = (n-1)(Dn-1+Dn-2)。转载于:https://www.cnblogs.com/Shinered/p/11600...

2019-09-27 21:39:00 264

转载 二叉树中第 K小的元素

给定一个二叉搜索树,编写一个函数kthSmallest来查找其中第k个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。思路: 二叉搜索树因其有序,故采用中序遍历,可以得到第K小的元素。/** * Definition for a binary tree node. * struct TreeNode { * i...

2019-09-10 17:05:00 333

转载 二叉树的最近祖先

给定一个二叉树,找到该树中指定节点的最近公共祖先。其中节点5和节点1的最近公共祖先是节点3。说明:所有节点的值都是唯一的。p、q 为不同节点且均存在于给定的二叉树中解决思路:1.如果根节点的左右子树分别存在p,q,则返回此刻的根节点。2.如果根节点和左子树都不是节点,p,q,则可以根据公共祖先必定在右子树。3.否则公共祖先必在则在左子树。...

2019-09-09 22:19:00 148

转载 排序链表

在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。1. 利用递归的归并排序,自顶向下递归解决问题。class Solution {public: ListNode* sortList(ListNode* head) { if(!head) return NULL; int length = 0; ...

2019-09-04 11:12:00 79

转载 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6...

2019-09-03 16:08:00 83

转载 反转一个单链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode...

2019-08-30 16:00:00 156

转载 LRU缓存机制

运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最...

2019-08-29 17:30:00 79

转载 相交列表

编写一个程序,找到两个单链表相交的起始节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。思路:题目要求用O(n)的时间复杂度:1.两链表一同遍历,如果pA遍历结束,则pA=headB.2.两链表一同遍历,如果pB遍历结束,则pB=head...

2019-08-27 21:43:00 102

转载 删除链表中的节点

写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。因为函数只给定了一个参数,表面该节点就是要删除的结点。然后直接用下一个结点覆当前结点。开始没想到,因为一般都是先找前一个结点,以及下一个结点,这道题是直接用下一个结点覆盖当前结点。/** * Definition for singly-linked list. * struct ...

2019-08-27 18:08:00 105

转载 除自身以外数组的乘积

给定长度为n的整数数组nums,其中n > 1,返回输出数组output,其中 output[i]等于nums中除nums[i]之外其余各元素的乘积。说明:请不要使用除法,且在O(n) 时间复杂度内完成此题。思路:乘积值应该是左边值乘以右边值。需要循环两遍,才能得到正确的结果。class Solution {public: v...

2019-08-27 17:58:00 87

转载 2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。输入: 1输出: true解释: 20= 1可以用位运算,2的幂次n必定只有一个1,和n-1进行与运算后必然为0。class Solution {public: /* bool isPowerOfTwo(int n) { if(n <= 0) retur...

2019-08-27 17:37:00 97

转载 反转字符串中的单词

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution {public: ...

2019-08-26 16:41:00 109

转载 环形链表

给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。思路,利用哈希表,或者集合去重的特性。/** * Defin...

2019-08-24 16:26:00 69

转载 买卖股票的最佳时机2

给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, ...

2019-08-23 16:37:00 64

转载 买卖股票的最佳时机

给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...

2019-08-23 16:17:00 81

转载 二叉树最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回最大深度为3。/** * Definition for a binary tree node. * struct TreeNode { * int val...

2019-08-22 16:25:00 97

转载 格雷码

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2思路: 使用镜像翻转后的序列在最前边加0或者1。或者使用格雷码公式:G(i) = i^(i/2)。cl...

2019-08-22 16:14:00 231

转载 存在重复元素

给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true思路: 一种是利用排序, 第二种使用hashset。这里只展示第二种用法。class Solution {public: bool containsDuplic...

2019-08-22 11:54:00 71

转载 子集

给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]class Solution {public: vector<vector&lt...

2019-08-21 16:54:00 81

转载 爬楼梯

假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶使用了简单动态规划。 第n阶的方法总数为上一级或者上上级两者方法之和。class Solution {publ...

2019-08-21 16:18:00 53

转载 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?如:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -&...

2019-08-21 16:08:00 68

转载 寻找众数

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出:21.很简单的排序,因为众数大于总长度的1/2,故排序后的中位数必定是众数。(刚开始还全都寻找了一遍)class S...

2019-08-20 17:42:00 426

转载 旋转链表

给定一个链表,旋转链表,将链表每个节点向右移动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-08-20 16:55:00 55

转载 螺旋矩阵2

给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]和之前的螺旋矩阵有点像:class Solution {public: vector<vector<int>> generateMa...

2019-08-20 11:14:00 90

转载 螺旋矩阵

给定一个包含m x n个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]思路: 主要设置了4个边界, 分别是上、下、左、右四个边界。class Solution {public: ...

2019-08-20 11:00:00 111

转载 最大子序和

题目: 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。利用简单动态规划, 当前数组num[i]有两种情况:1). 被添加到之前的连续子序中,使得之前的连续子序和增加。2). ...

2019-08-19 17:25:00 50

转载 异或

Leecode 一道题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?开始想的是排序算法(nlog(n))或者哈希表。 后来大神提出异或的思路:异或运算满足交换律: a^b^c = a^c^b, 0^n = n, n^n = 0;c...

2019-08-18 12:26:00 66

转载 旋转数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。class Solution {public:...

2019-08-15 22:14:00 58

转载 Leecode 关于异或的题

每条信息被编译为二进制数B,其长度为N然后该信息被写下N次,每次向右移动0,1,...K-1位。如 B = 1001010, K= 410010101001010 1001010 1001010这样的结果是1110100110 (S),要求实现解密过程。解题思路: 当数组B长度大于等于3时,S的对应位置应该是由B本位的前3位异或计算组成的。...

2019-08-11 22:16:00 103

转载 C++ vector的越界错误

做题的时候,c++的vector下标引用成功地坑到了自己。参考:https://blog.csdn.net/hexiaomin_1984/article/details/26168265在写 for 循环时候,当条件为 i < = v.size()-1的时候, 很容易出现数组越界。 int j = a.size()-2; //cout <...

2019-08-11 22:10:00 1421

转载 合并K个有序链表

合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。首先我想到的是两两合并,分析时间大概是接近O(n^2)了。leecode显示需要200ms./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;...

2019-08-02 23:03:00 46

转载 合并两个有序数组

给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。刚开始的思路是直接从头开始比较插入,但是有点麻烦。后来借鉴别人的思路: 从后...

2019-08-01 17:15:00 48

转载 删除排序数组中的重复项

比较简单的题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。class Solution {public: int removeDuplicates(vector<int>& nums) {...

2019-07-31 17:37:00 77

转载 合并两个有序列表

题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。考了关于链表的使用, 另外用New开辟的内存如果不释放容易造成内存泄漏。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne...

2019-07-31 17:35:00 85

转载 最接近的三数之和

给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。参考了之前的三数之和的双指针算法,对撞指针思想。class Solution {public: int threeSumClosest(vector<int>&amp...

2019-07-26 12:05:00 47

转载 所有三元组

题目:给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。解题: 这个题目首先要对所有元素进行排序,如果用暴力破解大概时间上是(O^3)。借鉴了别人使用的双指针法,和盛水最多的容器那道题有点类曲同工之妙。固定第一个数x,若其他两个...

2019-07-25 21:12:00 258

转载 Leecode有效的括号

给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。题目比较简单,主要使用的是栈先进后出的结构特性。class Solution {public: bool isValid(string s) {...

2019-07-25 20:49:00 84

转载 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。class Solution {public: string longestCommonPrefix(vector<string>& strs) { string pre = ""; if(strs.size()==0)...

2019-07-22 11:23:00 37

转载 盛水最多的容器

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。第一遍用暴力解法:...

2019-07-21 21:47:00 80

转载 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。如果输入是负数:return false;输入正数:如121, return true;第一遍写法直接判断数字第一位和最后一位是否相等:class Solution {public: bool isPalindrome(int x) { if(x &...

2019-07-21 17:34:00 56

空空如也

空空如也

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

TA关注的人

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