自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 151. 翻转字符串里的单词

给你一个字符串s,逐个翻转字符串中的所有单词。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。请你返回一个翻转s中单词顺序并用单个空格相连的字符串。说明:输入字符串s可以在前面、后面或者单词间包含多余的空格。 翻转后单词间应当仅用一个空格分隔。 翻转后的字符串中不应包含额外的空格。示例 1:输入:s = "the sky is blue"输出:"blue is sky the"示例 2:输入:s = " ...

2022-03-13 17:28:10 116

原创 146. LRU 缓存

请你设计并实现一个满足LRU (最近最少使用) 缓存约束的数据结构。实现LRUCache类:LRUCache(int capacity)以正整数作为容量capacity初始化 LRU 缓存 int get(int key)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。 void put(int key, int value)如果关键字key已经存在,则变更其数据值value;如果不存在,则向缓存中插入该组key-value。如果插入...

2022-03-12 16:44:00 1110

原创 LeetCode-9. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。..

2021-03-17 22:33:38 132

原创 LeetCode-11. 盛最多水的容器

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

2021-03-15 22:22:17 80

原创 LeetCode-70. 爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶class Solution { public i...

2021-03-15 21:25:38 60

原创 LeetCode-3. 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注意,你的答案必须是 子串 ...

2021-03-14 17:05:58 70

原创 LeetCode-4. 寻找两个正序数组的中位数

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1...

2021-03-13 10:02:00 60

原创 LeetCode-54. 螺旋矩阵

给你一个 m 行 n 列的矩阵matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]提示:m == matrix.lengthn == matrix[i].lengt...

2021-03-06 13:49:50 130

原创 LeetCode-中序遍历

给定一个二叉树的根节点 root ,返回它的 中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100...

2021-02-21 13:01:39 130

原创 LeetCode-重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入复制[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值复制{1,2,5,3,4,6,7}# -*- coding:utf-8 -*-# class TreeNode:# def __i

2021-02-21 12:00:35 122

原创 LeetCode-两数相加

给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9...

2021-02-19 17:51:29 94

原创 LeetCode-46. 全排列

给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public bo...

2021-01-24 23:34:38 98

原创 LeetCode-88. 合并两个有序数组

给你两个有序整数数组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输出:[1,2,2,3,5,6]提示:...

2021-01-09 14:54:52 136 1

原创 LeetCode-53. 最大子序和

给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。class Solution { public int maxSubArray(int[] nums) { int sum=0,ans=nums[0...

2021-01-05 22:20:40 77

原创 LeetCode-169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。基本解法:存储,然后比较。class Solution { public int majorityElement(in...

2021-01-05 21:45:57 179

原创 LeetCode-102. 二叉树的层序遍历

给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree node. * public class TreeNode { * i...

2021-01-02 16:38:17 82

原创 LeetCode-请判断一个链表是否为回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) {.

2021-01-01 23:47:44 520

原创 LeetCode-160. 相交链表

编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 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输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5

2020-12-27 22:37:23 88

原创 LeetCode-206. 反转链表

难度简单1414反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?注意点:输入空链表/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode n...

2020-12-27 21:19:53 89

原创 LeetCode-给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?注意点:n=1和n = size时;链表长度为1时;/** * Definition for singly-linked list. * public class List...

2020-12-27 16:23:29 879

原创 leetcode-给定一个链表,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4], pos = ...

2020-12-27 15:53:00 458

原创 leedcode-26. 删除排序数组中的重复项

难度简单1764给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],...

2020-12-27 14:56:07 67

原创 leetcode-21. 合并两个有序链表

难度简单1450收藏分享切换为英文接收动态反馈将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*List...

2020-12-26 23:54:07 95

原创 Leetcode:1. 两数之和

难度简单给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]注意点:边界:nums.length-1;classSolution{publicint[]...

2020-12-24 21:20:09 65

原创 Android的native崩溃捕获与分析

1.集成BreakPad,产生一个native crash;输出到路径:/data/data/fun.learnlife.breakpaddemo/files/crashDump2.pull出来获取dmp文件。3.使用minidump_stackwalk解析dmp文件,这里遇到一点麻烦,Windows平台很简单使用Android Studio\bin\lldb\bin下面的minidump_stackwalk即可。命令:D:\Program Files\Android\Android Studi

2020-11-22 15:37:46 1510

原创 Android性能监控之CPU占用

CPU进程占用率和线程占用率计算:思路如下:1.通过读取 /proc/stat 文件获取总的 CPU 时间,2.读取 /proc/[PID]/stat 获取进程 CPU 时间,3.读取 /proc/[PID]/task/[TID]/stat 获取线程 CPU 时间。4.采样两个足够短的时间间隔的 CPU 快照与进程或线程快照来计算其 CPU 使用率。/**读取的文件位置 // 含义* /proc/stat // ...

2020-11-22 15:07:59 1726 2

原创 Android冷启动优化之启动器

Initiator-Android启动器Android 启动优化方向:1、合理利用多线程,核心线程数的设置。利用Systrace辅助查看各任务的启动时间耗时cpu time:真正使用的时间。(数据小为IO密集型操作,可以随便开线程开启该任务,如使用线程池的newCachedThreadPool。)wall time:包含等待的时间片。(就绪状态:等待时间片的到来。或者阻塞状态:主动的等待条件)2、延迟初始化(不重要的任务)3、IdleHandler4、sp优化5、启动阶段不启动子进程6、提

2020-10-08 23:04:25 347 2

原创 思维导图:数据链路层

2020-02-25 19:10:39 1473

原创 GitHub搜索技巧

in:name example 名字中有“example”in:readme example readme中有“example”in:description example 描述中有“example”stars:>1000 star>1000forks:>1000 fork>1000pushed:>2019-09-01 2019年9月1日后有更新的...

2020-02-22 13:45:23 119

原创 TopN问题

一般的方法:部分排序,堆排序,分治。从很多数中选取前1000大的数字;1.考虑全部排序,取到前1000个。但是复杂度很高,本来的数就很多,一般很耗时;2.利用分治,类似快速排序中的主元选取后划分数组,每次都递减一半的规模,直到1000时候就得到了1000大小的数字。复杂度为n+n/2+n/4...<2n,复杂度O(n);3.利用小顶堆,维护一个前1000大的小顶堆,如果小于直...

2020-02-21 15:12:51 251

原创 快速排序原理

快速排序利用分治的思想,每次选取一个主元,把数组分为部分。需要考虑的是:1.如何选取主元,主元的选取关系着算法的效率,最好情况下每次主元大小居中,复杂度为nlogn;最坏情况下,主元每次都在端点。2.如何划分为两部分。主元的选取:取左中右三个取中位数;子集划分:调用上面的方法后,主元被放到Right-1处;现在处理这[Left,Right-1]这部分,取出Lef...

2020-02-21 12:17:49 217

原创 选择排序与堆排序

选择排序,需要每次在未排序的数组中找到最小元,然后与有序部分的最大值交换,在一个for循环中,简单的扫描获取最小元,复杂度为O(n²);因此,想办法优化获取最小元的部分,用最小堆,于是优化为堆排序;在排序过程中,使用最小堆需要新开辟一个数组用于存放临时拍好的部分数组,排好后再导回原始的数组输出,浪费了O(n)空间;改进:使用最大堆,把根节点的最大元素调整到最后一个节点,然后堆的规模...

2020-02-20 11:19:37 129

原创 希尔排序

使用插入排序,例如分别进行5间隔,3间隔,1间隔排序。增量序列应该互质,否则可能导致之前的几趟排序根本没做事。在1间隔排序时候已经消除了大部分的逆序对,数组已经基本有序了;最坏的时间复杂度为O(n²)...

2020-02-20 10:45:22 112

原创 Dijkstra迪杰斯特拉算法原理

定义集合S,初始化只有源点s.把一个个顶点不断往里面收敛;定义距离的数组dist.初始化为无穷;时间复杂度:根据不同的实现1.扫描所有未被收入的顶点,o:v^2+E,对于稠密图效果好。e=v^2;2.dist存储在最小堆中,取dist只要堆的根节点弹出就行,但是更新时候还要调节堆logv。复杂度elogv;对于稀疏图效果好。e=v;...

2020-02-17 14:36:08 250

原创 Dijkstra迪杰斯特拉最短路径算法

问题 A: 算法7-15:迪杰斯特拉最短路径算法[命题人 :外部导入]时间限制 :1.000sec内存限制 :32 MB解决: 253提交: 253统计题目描述在带权有向图G中,给定一个源点v,求从v到G中的其余各顶点的最短路径问题,叫做单源点的最短路径问题。在常用的单源点最短路径算法中,迪杰斯特拉算法是最为常用的一种,是一种按照路径长度递增的次序产生最短...

2020-02-17 13:35:16 485

原创 树的遍历查找-家谱树检索

找家谱成员输入若干行,每一行的第一个输入为家谱中的某成员,该行接着输入的信息为每个孩子姓名。最后一行的输入为要求查找的二个家谱成员的关系。要求,根据输入的家谱成员信息,建立二叉树家谱关系图,并输入二位待查成员在家谱中的关系,包括输出他们最近邻的共同祖先以及在家谱中相差的层次数。输入:Ye Shu BaShu Ge Mei1Ba Self Mei2Ge Son1 So...

2020-02-12 17:52:05 685

原创 8皇后问题

问题 D: 【递归入门】n皇后 问题(原始的8皇后问题)[命题人 :外部导入]时间限制 :1.000sec内存限制 :128 MB解决: 478提交: 478统计题目描述 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。输入...

2020-02-10 10:55:39 267

原创 【递归入门】组合+判断素数

问题 C: 【递归入门】组合+判断素数[命题人 :外部导入]时间限制 :1.000sec内存限制 :128 MB解决: 683提交: 683统计题目描述已知 n 个整数b1,b2,…,bn以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部...

2020-02-09 21:45:38 445

原创 数组中挑r个数字

问题 B: 【递归入门】组合的输出[命题人 :外部导入]时间限制 :1.000sec内存限制 :128 MB解决: 708提交: 708统计题目描述排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r < = n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你不用递归的方法输出所有组合。例如n = ...

2020-02-09 15:29:54 156

原创 深度优先搜索(DFS)全排列

问题 A: 【递归入门】全排列[命题人 :外部导入]时间限制 :1.000sec内存限制 :128 MB解决: 1018提交: 1018统计题目描述 排列与组合是常用的数学方法。先给一个正整数 ( 1 < = n < = 10 )例如n=3,所有组合,并且按字典序输出:1 2 31 3 22 1 32 3 13 1 23 2 1...

2020-02-09 11:02:47 350

空空如也

空空如也

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

TA关注的人

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