c++
文章平均质量分 68
eilot_c
这个作者很懒,什么都没留下…
展开
-
二叉树刷题2
654. 最大二叉树难度中等196收藏分享切换为英文接收动态反馈给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:二叉树的根是数组中的最大元素。 左子树是通过数组中最大值左边部分构造出的最大二叉树。 右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。示例 :输入:[3,2,1,6,0,5]输出:返回下面这棵树的根节点: 6 / \ 3 5 \ .原创 2020-10-05 15:43:52 · 258 阅读 · 0 评论 -
算法刷题之二叉树
二叉树的遍历:前序遍历: 根左右中序遍历:左根右后序遍历: 左右根计算二叉树有多少个结点int count(TreeNode root){ if(root==null) return 0; return 1 + count(root.left)+count(root.right);}226. 翻转二叉树难度简单645收藏分享切换为英文接收动态反馈翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ .原创 2020-10-05 14:49:15 · 263 阅读 · 0 评论 -
leetcode之括号问题
20. 有效的括号难度简单1894收藏分享切换为英文接收动态反馈给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"...原创 2020-10-05 14:01:25 · 526 阅读 · 0 评论 -
链表排序
链表排序题目描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)[链接][https://leetcode-cn.com/problems/sort-list]著作权归领扣网络所有。原创 2020-09-02 12:10:42 · 136 阅读 · 0 评论 -
leetcode200. 岛屿数量
难度中等739收藏分享切换为英文关注反馈给你一个由'1'(陆地)和'0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:...原创 2020-08-30 20:01:39 · 119 阅读 · 0 评论 -
C++基础三
C++基础三函数模板使用类型,逻辑非常相似类型参数化 泛型编程—模板技术template// 告诉编译器,下面如果出现T不报错,T是通用类型template//与前者等价mySwapT(a, b);1.自动类型推导,必须有参数类型才可以推导2.显示指定类型mySwapT(a, b);3.模板必须要指定T才可以使用函数模板与普通函数的区别和实现函数模板不能隐士转换如果出现重载, 优先使用普通函数调用, 如果没有实现,则会出现错误如果想强制调用模板, 则可以使用空参数列表函数模原创 2020-08-24 20:54:25 · 111 阅读 · 0 评论 -
C++基础2
运算符重载运算符重载,就是对已有的运算符进行重定义,赋予其另一种功能, 以适应不同的类型加号运算符重载如果想让自定义数据 进行+ 号运算, 那么就需要重载+号运算符在成员函数里面或者全局函数里 重写一个+运算符的函数函数名operator+(){}运算符重载也可以提供多个版本重载左移运算符不要随意卵用符号重载内置数据类型的运算符不可以重载cout<<直接对Person 自定义数据类型 进行输出写到全局函数中ostream & operator<<原创 2020-08-21 18:16:48 · 170 阅读 · 0 评论 -
C++基础第一部分
C++基础c++概述C++是对c的扩展,是c语言的超集。库是编程模块的集合,可以在程序中调用它们,库对很多常见的编程问题提供了可靠的解决方法,因此可以节约大量的时间和工作量。c++ 在c语言基础上增加了面向对象和泛型编程的思想。::双冒号 作为全局作用域命名空间namespace命名空间的主要用途, 用来解决命名冲突的问题1.命名空间下, 可以放 函数, 变量, 结构体, 类2.命名空间必须定义在全局作用域下3.命名空间可以嵌套命名空间4.命名空间是开放的,可以随时向命名空间添加内容原创 2020-08-20 20:47:20 · 323 阅读 · 0 评论 -
leetcode692. 前K个高频单词
给一非空的单词列表,返回前k个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例 2:输入: ["the", "day...原创 2020-07-30 16:26:48 · 305 阅读 · 1 评论 -
leetcode347. 前 K 个高频元素
给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(nlogn) ,n是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按...原创 2020-07-30 15:29:00 · 213 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为...原创 2020-07-28 21:02:27 · 128 阅读 · 0 评论 -
leetcode.面试题68 - I. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 ...原创 2020-07-28 20:06:54 · 118 阅读 · 0 评论 -
leetcode.525. 连续数组
给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0] 输出: 2 说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意:给定的二进制数组的长度不会超过50000。当长度大于10000的时候就不适合用复杂度为o(n^2)c++class Solution {public: .原创 2020-07-23 21:21:51 · 320 阅读 · 0 评论 -
leetcode101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?对称二叉树的左子树的前序遍历等于右子树的后序遍历的逆# Definition f...原创 2020-07-23 20:01:37 · 96 阅读 · 0 评论 -
leetcode965. 单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是[1, 100]。 每个节点的值都是整数,范围为[0, 99]。# Definition for a binary tree node.# class TreeN...原创 2020-07-23 19:25:01 · 131 阅读 · 0 评论 -
leetcode645. 错误的集合
集合S包含从1到n的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组nums代表了集合S发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范围是[2, 10000]。 给定的数组是无序的。通过次数17,175提交次数40,441...原创 2020-07-21 23:36:58 · 163 阅读 · 0 评论 -
leetcode142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2]...原创 2020-07-19 23:33:35 · 96 阅读 · 0 评论 -
leetcode141. 环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head =...原创 2020-07-19 23:08:58 · 97 阅读 · 0 评论 -
leetcode485. 最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含0和1。 输入数组的长度是正整数,且不超过 10,000。通过次数44,050提交次数77,816在真实的面试中遇到过这道题?#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2020/7/19 21:09# @..原创 2020-07-19 21:41:41 · 227 阅读 · 0 评论 -
leetcode283.作业题把数组中的零移动到末尾
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2020/7/19 20:50# @Author : caius# @Site : # @File : day37.py# @Software:原创 2020-07-19 21:04:09 · 489 阅读 · 0 评论 -
leetcode.1171. 从链表中删去总和值为零的连续节点
给你一个链表的头节点head,请你编写代码,反复删去链表中由总和值为0的连续节点组成的序列,直到不存在这样的序列为止。删除完毕后,请你返回最终结果链表的头节点。你可以返回任何满足题目要求的答案。(注意,下面示例中的所有序列,都是对ListNode对象序列化的表示。)示例 1:输入:head = [1,2,-3,3,1]输出:[3,1]提示:答案 [1,2,1] 也是正确的。示例 2:输入:head = [1,2,3,-3,4]输出:[1,2,4]...原创 2020-07-08 11:47:16 · 514 阅读 · 1 评论 -
leetcode.剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表难度简单36收藏分享切换为英文关注反馈输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000通过次数52,444提交次数68,914在真实的面试中遇到过这道题?是否《剑指 Offer(第 2 版)》官方授权/** * Definition for singly-li..原创 2020-07-06 16:57:19 · 232 阅读 · 0 评论 -
leetcode.面试题 02.02. 返回倒数第 k 个节点
难度简单33收藏分享切换为英文关注反馈实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的k保证是有效的。python3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = ..原创 2020-07-06 15:26:25 · 185 阅读 · 0 评论 -
leetcode.面试题 02.07. 链表相交
面试题 02.07. 链表相交给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8原创 2020-07-06 13:59:42 · 234 阅读 · 0 评论 -
leetcode56. 合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。class Solution {public: vector<vector<int&.原创 2020-06-28 16:19:52 · 185 阅读 · 0 评论 -
leetcode118. 杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]f(i,j)=f(i−1,j−1)+f(i−1,j)f(i,j)=1wherej=1orj=iclass Solution {public: vector<vect...原创 2020-06-16 21:32:14 · 177 阅读 · 0 评论 -
leetcode24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val.原创 2020-06-16 12:33:19 · 155 阅读 · 0 评论 -
leetcode344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a"...原创 2020-06-16 11:41:53 · 181 阅读 · 0 评论 -
day20.归并排序
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并排序算法的核心正是 Day 19 的合并两个有序数组,补全如下代码:defmerge_sort(lst):###returnlst_sorted归并排序两阶段:先分,直到长度...原创 2020-06-11 18:05:50 · 165 阅读 · 0 评论 -
重学C++ 重构C++知识体系
C++基础容器序列型容器–数组◆ 概念代表内存里一组连续的同类型存储区可以用来把多个存储区合并成一个整体比如:int arr[10] = {1,2,3,4,5,6,7,8};◆ 数组声明int arr[10]类型名称int表示数组里所有的元素的类型名称arr是数组的名称整数10表示数组里包含的元素个数数组元素个数不可变新型数组–vector◆ Vector 是面向对象方式的动态数组向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Cont原创 2020-06-11 01:01:50 · 3646 阅读 · 2 评论 -
leetcode88. 合并两个有序数组
难度简单524收藏分享切换为英文关注反馈给你两个有序整数数组nums1和nums2,请你将nums2合并到nums1中,使nums1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3...原创 2020-06-10 16:05:44 · 217 阅读 · 0 评论 -
leetcode74.搜索二维矩阵
编写一个高效的算法来判断mxn矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例2:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], ...原创 2020-06-09 10:54:50 · 183 阅读 · 0 评论 -
day18.二分查找法
二分查找算法,binary search algorithm,也称「折半搜索算法」、「对数搜索算法」它的使用前提:是一种在「有序数组」中查找某一特定元素的搜索算法。请补全下面二分查找算法:#返回hkey在数组中的索引位置defbinary_search(arr,left,right,hkey):""" arr:有序数组 left:查找区间左侧 right:查找区间右侧 hkey:带查找的关键码备注:left, right 都包括在...原创 2020-06-09 10:35:03 · 147 阅读 · 0 评论 -
leetcode9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。class Solution {public: bool isPalindrome(int .原创 2020-06-08 21:20:49 · 97 阅读 · 0 评论 -
Day 14 作业题:反转单链表
反转单链表检验我们是否能够真正灵活使用它,也是面试频频被问道的一个题目。例如反转上面单链表的方法之一:黑色结点的下一个结点现在是空。因此,我们停止这一过程并返回新的头结点 15。根据以上提示,请补全下面代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x).原创 2020-06-08 10:24:49 · 220 阅读 · 0 评论 -
leetcode237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 --head =[4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1输出: [4,5,9]解释:...原创 2020-06-03 19:14:38 · 182 阅读 · 0 评论 -
leetcode.84. 柱状图中最大的矩形
给定n个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10class Solution {public: int largestRectangleArea(ve...原创 2020-06-02 19:54:46 · 163 阅读 · 0 评论 -
leetcode153.寻找旋转排序数组中的最小值
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0class Solution {public: int findMin(vector<int>& nums) { ...原创 2020-06-02 18:12:41 · 220 阅读 · 0 评论 -
leetcode18. 四数之和
给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2...原创 2020-06-02 17:02:40 · 130 阅读 · 0 评论 -
leetcode15. 三数之和
给你一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Solution {public: vector<vector<int>>...原创 2020-05-29 15:33:24 · 126 阅读 · 0 评论