Leetcode刷题
Leetcode题目
roy_blue
算法工程师,希望和大家共同提高,欢迎关注,关注必回
展开
-
【一周编程学习】--3.队列与堆的学习-LeetCode第239题
1.队列与堆学习笔记队列的存储结构:是一种先进先出的线性表,只允许在一端插入数据(队尾),在另一端进行删除操作(队头)头指针 front 和 尾指针 rearFront(队头):从队列中获得最前面的元素。Rear(队尾):从队列中获得最后面的元素。队列的操作Enqueue(入队/插入):添加元素到队列中。如果队列满了,则表示溢出(Overflow)情况。De...原创 2019-01-05 20:38:37 · 161 阅读 · 0 评论 -
【一周编程学习】--2.链表--leetcode206、142题
1.单链表知识小结构成:头指针(Header),若干个节点(节点包括了数据域和指针域),最后一个节点要指向空。单链表的基本操作初始化:typedef int ElemType;typedef struct Node{ElemType data;struct Node* next;}Node;typedef struct Node* LinkList;voi...原创 2019-01-04 20:13:04 · 219 阅读 · 0 评论 -
【一周编程学习】--1.用哈希思想实现--LeetCode的第1题和第202题
1.LeetCode第一题 两数之和以一个数为基准,再用目标数减去基准数得到他们的差值,再在数组中找这个差值。这个时候以数组存放的数值为key值,数值对应的数组下标为value值。利用哈希查找算法查找相应值的下标。分别用C++和Pyhton做的:vector<int> twoSum(vector<int> nums,int target){ un...原创 2019-01-03 21:24:24 · 376 阅读 · 2 评论 -
【一周编程学习】--4.二叉树的学习笔记--LeetCode第98题、102题、107题
1.二叉树的相关知识点二叉树具有五种基本形态:空二叉树。 只有一个根结点。 根结点只有左子树。 根结点只有右子树。 根结点既有左子树又有右子树以二叉链表作为二叉树存储结构:data是数据域,lchild指向左孩子的指针域,rchild指向右孩子的指针域 typedef struct BinTreeNode{ char data; str...原创 2019-01-06 20:13:22 · 1062 阅读 · 2 评论 -
【一周编程学习】--6.递归LeetCode第17题、46题
1.LeetCode第17题题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解题思路:这是一个字母排列问题,先将输入的数字替换成对应的字母。从输入数字的第一个数字开始,将每一种可能的结果添加到结果中,递归终止的条件是当组合字母的索引等于输入数字的长度时。findCombination(...原创 2019-01-08 19:14:11 · 161 阅读 · 0 评论 -
【一周编程学习】--7.DP动态规划 0-1背包问题
1.01背包问题0-1 背包问题:给定 n 种物品和一个容量为 V的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?首先回顾动态规划的内容,DP与分治区别在于划分的子问题是有重叠的,解过程中对于重叠的部分只要求解一次,记录下结果,其他子问题直接使用即可,减少了重复计算过程。最优子结构性质:最优解包含了其子问题的最优解...原创 2019-01-09 21:45:24 · 632 阅读 · 0 评论 -
【Leetcode刷题】---动态规划--53.最大子序和
题目描述: 最大子序和 给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。 例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4], 连续子序列 [4,-1,2,1] 的和最大,为 6。扩展练习:若你已实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 解:使用...原创 2019-01-31 10:25:49 · 254 阅读 · 0 评论 -
【Leetcode刷题】--动态规划--Leetcode62-求网格中的唯一路径数
题目:机器人位于一个 m x n 网格的左上角, 在下图中标记为“Start” (开始)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,在下图中标记为“Finish”(结束)。问有多少条不同的路径?例如,上图是一个3 x 7网格。有多少可能的路径?注意: m 和 n 的值均不超过 100。 解:从起点到m,n的路径=从起点到m,n-1的路径+从起点到m-...原创 2019-02-01 21:53:45 · 446 阅读 · 0 评论 -
【Leetcode刷题】--动态规划--Leetcode63-求网格中的唯一路径数 二
题干:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。输入:[ [0,0...原创 2019-02-02 20:02:24 · 422 阅读 · 1 评论 -
【Leetcode刷题】--链表--leetcode21.融合两个有序链表
题目: 给出两个排序的单链表,合并两个单链表,返回合并后的结果;Input: 1->2->4, 1->3->4Output: 1->1->2->3->4->4解法:解法还是很简单的,但是需要注意以下几点:1. 如果两个链表都空,则返回null;2. 如果链表1空,则返回链表2的头节点;反之,如果链表2为空,则返回...原创 2019-02-05 17:42:02 · 183 阅读 · 0 评论 -
【Leetcode刷题】--链表--leetcode23.融合k个有序链表
题目:Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.分析:合并k个有序链表,其本质就是合并2个有序链表(用递归代码会更简洁),然后作k-1次就可以了。如果每次合并的链表是最短的,那应该时间最短,这个可以用小根堆实现。/** * Def...原创 2019-02-06 23:08:00 · 173 阅读 · 0 评论 -
【Leetcode刷题】--链表--第206题 单链表的翻转
2.LeetCode第206题 单链表的翻转这道题和剑指offer的第3题从尾到头打印链表是有区别的。单链表的反转是对结点一个一个操作的,每次把后面的一个结点抛到前面,不需要开辟另外的内存空间。使用C++和Python实现:/** * Definition for singly-linked list. * struct ListNode { * int val;...原创 2019-02-10 11:08:37 · 190 阅读 · 0 评论 -
【Leetcode刷题】--链表--第142题.环形链表的起始点
方法一:快慢指针法判断一个单链表是否有环的问题。如果一个单向链表不带环,那尾部结点的next指针是NULL,否则尾结点的指针指向链表中的某一结点的数据域。通常可采用快慢指针,定义两个指针,一个指针一次移动一个结点slowP,另一个指针一次移动两个结点fastP,如果两个指针相遇,那么是有环;否则快指针指向NULL,则是无环;第一次相遇时,slowP指向头结点,fastP指向相遇的结点处,每次移...原创 2019-02-10 11:11:31 · 208 阅读 · 0 评论 -
【Leetcode刷题】--动态规划简单题-70.爬楼梯问题
有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶。实现一个算法,计算小孩有多少种上楼梯的方式。输入n,返回一个整数。因为每次只能走1,2阶,所以,当一共5级台阶时,可以看成在走了4阶基础上再跨1阶 + 走了3阶基础上再跨2阶 。f(n)=f(n-1)+f(n-2)可以看做斐波那契数列问题。//递归法int climbStairs(int n){ int ...原创 2019-01-26 20:16:58 · 535 阅读 · 0 评论