![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leedcode
创不了浩
代码练习生
展开
-
LeedCode300 最长上升子序列问题 动态规划 和 二分查找+贪心算法的区别
最长上升子序列3.5最长上升子序列3.5.1题目描述3.5.2思路与算法3.5.4其他方法对比方法1和方法2的if语句判定条件,就能想明白了3.5最长上升子序列3.5.1题目描述LeedCode题目:300.最长上升子序列描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是4。3.5.2思路与算法首先要明确这个题目只需要求上升子序列的个数,不用具体求出原创 2020-10-27 08:45:49 · 163 阅读 · 0 评论 -
1. 两数之和 leedcode java代码分析
两数之和题目描述1 暴力法2 HashMap2.1 为什么推荐使用Map map = new HashMap() 而不是 HashMap map = new HashMap() ?3 双指针方法3.1如果数组有序可以直接用3.2无序题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], tar原创 2020-10-24 13:35:50 · 162 阅读 · 0 评论 -
快速幂和矩阵快速幂 数学原理+例题 详解
快速幂取模算法快速幂的数学原理代码快速幂的数学原理比如a^156,而156(10)=10011100(2)我们就按照这个公式来求解a^156,原来要进行156-1=155次乘法运算,现在的差不多运算次数就是他 二进制的长度二进制中1的个数=84=24次代码普通快速幂的模板:int fastpow(int base,int n,int mod){ int ans=1; while(n){ if(n&1) ans*=base%mod; base*=base; n>&g原创 2020-10-20 00:06:13 · 436 阅读 · 0 评论 -
2020-09-12
链表1 反转链表核心思想1.生成一个新节点 ListNode* pre = NULL2.记录当前节点的逆转前的下一个节点 ListNode* next = head->next;3.让下一个节点指向当前上一个节点(第一个节点指向空) head->next=pre4.一直遍历到最后一个节点 pre = head; head = next;/** * Definition for singly-linked list. * struct ListNode { * in原创 2020-09-12 17:34:24 · 108 阅读 · 0 评论 -
STL Map的使用
#include<stdio.h>#include<map>struct RandomListNode{ int label; RandomListNode *next,*random; RandomListNode (int x) : label(x) , next(NULL), random(NULL){}};int main(){ std::map<RandomListNode *,int> node_map; //设置一个map结点,key为结原创 2020-05-26 00:28:07 · 115 阅读 · 0 评论 -
划分链表后连接链表 leedcode166
#include<stdio.h>struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x),next(NULL){}};class Solution{ public: ListNode* partition(ListNode* head,int x){ ListNode less_head(0); //设置两个临时的结点 ListNode more_head(0); Lis原创 2020-05-23 00:05:08 · 130 阅读 · 0 评论 -
求两个链表的交点,若无交点返回null, 两种方法,时间复杂度为O(n)和O(n logn)
目录方法1使用set必备知识set的使用利用set求两个链表的交点方法2 分别求出链表长度做差后同时移动核心思想:1.分别求出两个链表长度2.用长的减去短的得到差值delta3.让长链表的头指针向前移动delta位,让两个链表此时指针和交点距离一样远4.同时移动两个链表的指针,直到有第一个交点为止.方法1使用set必备知识set的使用利用set求两个数组的相同元素#include<set>#include<stdio.h> int main(){ std::set&l原创 2020-05-19 08:21:00 · 466 阅读 · 0 评论 -
逆序链表从m到n位置
目录1 逆置整个链表2 逆置一个链表的m到n位的元素,返回逆置后的头结点核心步骤1.如何找到逆置段的开始和结束位置?2.几个关键位置3.如何连接逆置后的逆置段分类讨论逆置段时候包括逆置前链表的头结点?学习地址1 逆置整个链表#include<stdio.h>struct ListNode{ int val; ListNode* next; ListNode(int x) : val(x) ,next(NULL) {}}; class Solution{ public:原创 2020-05-17 13:45:27 · 297 阅读 · 0 评论 -
^异或的使用 只出现一次的数字
只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4int singleNumber(int* nums, int numsSize){ int...原创 2020-04-24 21:28:55 · 177 阅读 · 0 评论