- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 二分查找最详细的总结
二分查找详解二分查找主要有三种变形,找出任意一个相等的元素,找出相等元素的左边界,找出相等元素的右边界(这里还有一种取巧办法,只要找比要找的元素target大一的最左边界的位置减一即可)。而二分查找又需要注意搜索区间是左闭右开还是全闭区间,因此延伸出循环的结束条件以及在不同条件下如何更新区间,还有最后的返回值的问题,这些都是依赖于搜索区间的。接下来为了说清楚上面需要考虑的问题,我会首先使用大家最常用的左闭右开区间为例,之后再给出闭区间版本(更简单,好用)。一、基础版:找出任意一个相等元素的位置这个
2021-09-04 23:07:07 859
原创 剑指Offer 43. 1-n 整数中 1 出现的次数
剑指Offer 43. 1~n 整数中 1 出现的次数解题思路思路很简单:分成若干个区间分别计算,同时用一个表记录经常要用到的某些区间1的数目。为了方便理解下面的分析,我先列举几个易推得的结果:1位数 0-9: 1个;2位数 0-99: 20个 = 1位数所有的1(区间0 ~ 9) + 全部两位数所有的1( 区间10 ~ 99分成十位是1和十位是2-9);具体来说,最高位是1的两位数(即10 ~ 19)全部1的个数:首先每个数的最高位都有1 所以至少有10个(19 - 10 + 1, 或是10
2021-04-14 16:36:58 152 1
原创 时间戳计时器
时间戳计时器之前在做CSAPP:Lab_Performance的时候,查看代码遇到这个问题。查阅资料之后,整理、记录一下。时间戳计时器 Time Stamp Counter(TSC)是自Pentium之后所有的x86处理器都有的一个64位寄存器。它对自上次重设之后的cycles的数量计数。指令RDSTC将TSC返回到串联寄存器组EDX:EAX中(即低32位保存在EAX中,高32位保存在EDX中)。在x86-64机器中,RDSTC还会将RAX和RDX高32位清空。它的操作码是0F 31。(以上定义,引用自
2020-08-24 19:03:32 1364
原创 C语言中变量类型、作用域与生命周期的总结
C的变量类型、作用域与生命周期的总结最近在看“C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些extern, auto, static, register等不是太理解,这本书讲的很详细,现在总结一下。首先, C的变量分成局部变量 local variable 和全局变量 global variable。【注】...
2020-04-09 23:04:32 840
原创 单调队列和Min栈总结
单调队列总结单调队列是指队列中的元素是按照单调递增或者递减的顺序排列的,一般常用于需要动态求某个范围的最值的情况单调队列一般使用双向队列来实现,具体实现细节见下面:// 创建单调队列Deque<Integer> monoQueue = new LinkedList<>();// 增加元素,从队列尾部增加元素,如果有比当前元素小的则弹出,维持单调队列// 因为单调队列是为了维护当前范围内的最大值,那么比当前元素小的元素必然不可能是最大值,因此这些元素删除不会有影响pub
2021-09-04 23:08:24 198
原创 1143.Longest Common Subsequence
LeetCode 1143.Longest Common Subsequence解法一 递归分析:假设字符串s1和字符串s2的最长公共子序列为lcs,则若从后往前搜索s1和s2时,若s1[i] == s2[j] 必有这个字符在lcs中。否则,若不在lcs中,那么lcs可以加上这个字符变得更长,不符合最长的定义。class Solution { public int longestCommonSubsequence(String text1, String text2) { in
2021-04-14 16:48:00 221
原创 剑指Offer 52. 找两个链表的第一个公共节点
剑指Offer 52. 找两个链表的第一个公共节点方法一. 常规做法先确定两个链表的长度,然后让指向长链表的指针先走,走到某个节点,使得从该节点到长链表尾的距离等于锻炼表的长度,然后两指针再同步走,一直走到底,如果走到底则说明不想交,否则在之前应该已经相遇。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(i
2021-04-14 16:45:47 120
原创 位运算使用技巧及巧解算法题
位运算使用技巧及巧解算法题位运算简单的复习一下基本的位运算,这些使用技巧在下面都有用到。// 按位与 & , 双1得1, 其他都得0,使用:比如设置某些位为0,或者取某些位// 按位或 | , 单1即可得1, 只有双0才得0,使用:比如设置某些位为1// 异或 ^ , 相同则为0,相反则为1,即 10相碰得1,使用:比如取某些位的相反位//下面这四个一般用来构造某些特殊的二进...
2021-04-14 16:40:08 1057
转载 Java中的引用和C中的指针
Java中的引用与C中的指针在整理Java时,感觉Java的引用和C的指针很类似,都是保存地址。然后在掘金的文章 java中的应用于c中的指针中,找到了一个比较合理的解释,特此码住。注意,本文仅为转载、记录,仅供个人学习引用。【补充】:Java的参数传递是按值传递(call by value)可以给出一个反例,说明Java不是按引用传递:public static void swap(Employee x, Employee y) { Employee temp = x; x = y; y
2021-04-14 16:38:32 1224
原创 Ubuntu换源后,更新提示GPG error缺少公钥
Ubuntu换源后,更新提示GPG error缺少公钥W: GPG error: http://mirrors.aliyun.com trusty-security InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32W: GPG error: http:/
2020-08-24 18:59:58 24012 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人