自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 15.链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.时间 On空间 O1class Solution: def getKthFromEnd(self, head: ListN.

2020-08-19 15:30:55 132

原创 14. 调整数组顺序使技术位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。class Solution: def exchange(self, nums: List[int]) -> List[int]: front = 0 end = len(nums) - 1 while end > front: nums[front], nums[end]...

2020-08-19 02:18:47 264

原创 13. 在o1时间内删除链表节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。若使用 C 或 C++ 语言,你不需要free或delete被删除的节点?思路:遍历链表,开始在p=head处考虑。当p->val == val时,删除p,返回p后面的链表头节点。当p->next->val != val时,向后遍历,直到p->next->val == val时止。删除p->next即可。class Solution {...

2020-08-19 02:07:21 314

原创 12.打印1到最大的n位数

输入数字n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。分为两种场景,是否是大数问题。class Solution: def printNumbers(self, n: int) -> List[int]: res = [] for i in range(1, 10 ** n): res.append(i) return res.

2020-08-19 02:00:16 118

原创 11. 数值的整数次方

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。class Solution: def myPow(self, x: float, n: int) -> float: if x == 0: return 0 res = 1 if n < 0: x, n = 1 / x, -n while n:

2020-08-19 01:44:27 74

原创 10. 二进制中1的个数

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。N&(N-1) 最右边一位变成0class Solution: def hammingWeight(self, n: int) -> int: res = 0 while n: res += 1 n &= n - 1 ...

2020-08-19 01:38:17 79

原创 9. 斐波那契数列

题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.由于 Python 中整形数字的大小限制取决计算机的内存(可理解为无限大),因此可不考虑大数越界问题。循环求余法:大数越界: 随着 nn 增大, f(n)会超过 Int32 甚至 Int64 的取值范围,导致最终的返回值错误。% 1000000007...

2020-08-19 01:33:32 307

原创 8. 旋转数组最小数字

题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。class Solution: def minArray(self, numbers: [int]) -> int: i, j = 0, len(numbers) - 1 while i < j: ...

2020-08-19 00:59:11 70

原创 7. 用两个栈实现队列

解题思路:加入队尾 appendTail()函数: 将数字 val 加入栈 A 即可。删除队首deleteHead()函数: 有以下三种情况。1. 当栈 B 不为空: B中仍有已完成倒序的元素,因此直接返回 B 的栈顶元素。2. 否则,当 A 为空: 即两个栈都为空,无元素,因此返回 -1−1 。3. 否则: 将栈 A 元素全部转移至栈 B 中,实现元素倒序,并返回栈 B 的栈顶元素。class CQueue { stack<int> stack1,stack2;

2020-08-19 00:24:44 80

原创 6. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。递归解析:递推参数: 前序遍历中根节点的索引pre_root、中序遍历左边界in_left、中序遍历右边界in_right。终止条件: 当 in_left > in_right ,子树中序遍历为空,说明已经越过叶子节点,此时返回 nullnull 。递推工作:建立根节点root: 值为前序遍历中索引为pre_root的节点值。搜索根节点root在中序遍历的索引i: 为了提升搜

2020-08-19 00:11:40 102

原创 5. 反转链表

剑指 Offer 06. 从尾到头打印链表最简单的就是递归,直到链表尾部,然后输出。但是,递归栈会爆栈。方法一:栈栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组中。创建一个栈,用于存储链表的节点创建一个指针,初始时指向链表的头节点当指针指向的元素非空时,重复下列操作:将指针指向的节点压入栈内将指针移到当前节点的下一个节点获得栈的大小 size,创建

2020-08-18 23:19:02 102

原创 4. 替换空格

题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。首先要看输入是什么书上的输入是char string[]leetcode的是string# Stringclass Solution {public: string replaceSpace(string s) { //字符数组 string array; //存储结果 .

2020-08-18 23:00:15 64

原创 3. 二维数组中的查找

https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/submissions/面试题3:二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。发现右上角往左是递减,往下是递增。相似左下角往右是递增,往上是递减。所以左下角也可以当做入手点,能够实现比较一个数就删掉一

2020-08-18 22:49:43 99

原创 2. 实现单例模式

题目:设计一个类,我们只能生成该类的一个实例。什么是单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例应用场景:全局类,如配置类,计数器等2. 思路: 既然只能有一个实例,那我这个类里的构造函数就不能被随便调用了,那我就把构造函数写成私有的,这样别人就不能调用了,那我就用一个static 实例化一个实例,然后返回这个static实例。3. 考虑的问题一个实例,整个系统使用,那线程同步问题就必须要考虑了。为了解决这个问题:懒汉模式、饿懒汉模式、Mey...

2020-08-18 22:37:56 78

原创 剑指offer 1 赋值运算符函数

通过创建一个临时的实例strTemp,再交换临时实例和原来的实例,由于strTemp是局部变量,运行到if外就会自动析构。CMyString& operator = (const CMyString& str) { if(this == &str) { return *this; } else { CMyString strTemp(str); char* pTemp = strTemp.m_pData; .

2020-08-18 22:22:38 58

原创 剑指Offer

...

2020-08-18 22:07:49 82

原创 消息队列

1

2020-08-18 20:47:16 70

原创 Linux相关面试题

1

2020-08-17 21:01:07 220

原创 linux日志 按照ip源来排查

1. 希望我干什么1)通过命令行2)通过脚本3)是否要定时任务,shell 里面的crontab,https://www.runoob.com/w3cnote/linux-crontab-tasks.html4).对于日志的操作,日志量的大小。实在哪个环境里用,python, c++, shell5) 结论是否要持久化lessawksed...

2020-08-16 17:51:43 132

原创 python Django

Django是用python语言写的开源web开发框架,强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架。问题3:MVC简介MVC的全拼为Model-View-Controller,软件设计模式,是为了达到分层设计的目的,从而使代码解耦,便于维护和代码的复用。MVC是3个单词的缩写,全称:Model-View-Controller(模型-视图-控制器)。MVC就是提供一种规则,让你把相同类型的代码放在一起,这样就形成了层次,从而达到分层解耦、复用、便于测试和维护的目的。We

2020-08-16 17:14:12 141

原创 python 脚本分析dns日志计算前几位的请求数域名

查一段时间的dns上的域名访问次数排行(top100)1. 原始文件数据分析1) 这个功能是否是长期需要使用的,如果是需要长期定时使用,可以优化dns或者监控相关的代码,如将计算相关的日志单独输出。2)找规律,编写正则算法。3) 读取日志文件,日志文件是否压缩。4)如何保存结果,字典,保存在内存,还是持久化到数据库。...

2020-08-16 16:43:51 218 1

原创 面试题

1

2020-08-16 16:36:18 62

原创 42. 接雨水

class Solution: def trap(self, height: List[int]) -> int: # 边界条件 if not height: return 0 n = len(height) left,right = 0, n - 1 # 分别位于输入数组的两端 maxleft,maxright = height[0],height[n - 1] ans = 0 ...

2020-07-27 17:54:50 134 2

原创 旋转图像

给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]class Solution: def rotate(self, matrix): """ :type matrix: List[List[int]] :...

2020-07-27 11:01:15 60

原创 二分查找左右边界

https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/er-fen-cha-zhao-suan-fa-xi-jie-xiang-jie-by-labula/def left_erfen(nums, target): l = 0 r = len(nums) while (l < r): mid = (l + r) //

2020-07-24 16:00:13 118

原创 92. 反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# sel...

2020-07-22 00:06:47 48

原创 83. 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next...

2020-07-21 23:36:16 53

原创 剑指 Offer 18. 删除链表的节点 LCOF

1# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, head: ListNode, val: int) -> ListNode: if head.val == val:

2020-07-20 23:48:32 51

原创 剑指offer 52 两个链表的第一个公共节点

https://pic.leetcode-cn.com/f6572ac3036f5b8635f6e7f7ed74129c2bfd779d9d3d77a93c3bd487f24ca75d-%E5%B9%BB%E7%81%AF%E7%89%872.JPG第一轮遍历完后交换位置。o(m+n)class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: .

2020-07-20 23:35:55 93

原创 剑指 Offer 25. 合并两个排序的链表 LCOF

1# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: cur = dum = ListNode(

2020-07-20 23:23:10 75

原创 翻转链表

翻转链表class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ # 申请两个节点,pre和 cur,pre指向None pre = None # 遍历链表,while循环里面的内容其实可以写成一行 # 这里只做演示,就不搞那么骚气的写法了 while head: # 记录当前节点的下一个节点 tmp =

2020-07-20 22:59:02 53

原创 链表中倒数第k个结点

双指针# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: fir, sec = head, head

2020-07-20 22:36:06 52

原创 剑指 Offer 06. 从尾到头打印链表

借住栈class Solution: def reversePrint(self, head: ListNode) -> List[int]: stack = [] while head: stack.append(head.val) head = head.next return stack[::-1]

2020-07-20 22:31:21 100

原创 剑指 Offer 55 - I. 二叉树的深度

class Solution: def maxDepth(self, root: TreeNode) -> int: if not root: return 0 return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1class Solution: def maxDepth(self, root: TreeNode) -> int: i...

2020-07-13 17:12:24 161

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]class Solution: def levelOrder(self, root: Tree...

2020-07-13 14:58:26 144

原创 剑指 Offer 32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...

2020-07-13 12:38:51 96

原创 剑指 Offer 27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入:4/ \2 7/ \ / \1 3 6 9镜像输出:4/ \7 2/ \ / \9 6 31示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]class Solution: def mirrorTree(self, root:...

2020-07-13 09:16:27 95

原创 剑指 Offer 07. 重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7# Definition for a binary tree node.# class TreeNode:# def __init__(se...

2020-07-09 10:59:00 136

原创 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], ...

2020-07-08 23:30:22 88

原创 剑指 Offer 34. 二叉树中和为某一值的路径

输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2],...

2020-07-03 15:43:09 112

空空如也

空空如也

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

TA关注的人

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