自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构-C语言实现-顺序线性表

数据结构-C语言实现-顺序线性表

2022-06-28 14:19:53 239 1

原创 Python实现二分查找

在有序数组nums中查找一个数字x,顺序查找的方法是将数组nums中的元素一个一个与x进行比较,时间复杂度为O(n)。二分查找的主要思想是:充分利用数组nums已经排好序的特点,我们取数组nums的中间位置(mid)的元素n_1,用n_1与目标数字x进行比较,如果n_1 等于x,那么直接返回n_1的位置mid;如果n_1大于x,则说明x如果在数组中的话,一定是在n_1的左侧;如果n_1小于x,则说明x如果在数组中的话,一定是在n_1的右侧。那我们只要重复上面的步骤就可以找到目标数字x在数组nums中的位

2021-08-25 17:15:51 236

原创 Python 剑指offer 11

这道题讲这么多其实就是找最小值。。。class Solution: def minArray(self, numbers: List[int]) -> int: return min(numbers)

2021-08-25 16:35:05 130

原创 Python 剑指offer 10-2

class Solution: def numWays(self, n: int) -> int: a, b = 1, 1 for i in range(n): a, b = b, a + b return a % 1000000007

2021-08-25 16:11:51 89

原创 Python 剑指offer 10-1

class Solution: def fib(self, n: int) -> int: if n == 0: return 0 elif n == 1: return 1 else: x = 0 y = 1 for i in range(n - 1): x, y = y, x + y .

2021-08-25 15:56:28 60

转载 Python 剑指offer 09

解题思路:栈无法实现队列功能: 栈底元素(对应队首元素)无法直接删除,需要将上方所有元素出栈。双栈可实现列表倒序: 设有含三个元素的栈 A = [1,2,3]A=[1,2,3] 和空栈 B = []B=[]。若循环执行 AA 元素出栈并添加入栈 BB ,直到栈 AA 为空,则 A = []A=[] , B = [3,2,1]B=[3,2,1] ,即 栈 BB 元素实现栈 AA 元素倒序 。利用栈 BB 删除队首元素: 倒序后,BB 执行出栈则相当于删除了 AA 的栈底元素,即对应队首元素。函数设.

2021-08-25 15:44:05 80

转载 Python 剑指offer 07

解题思路:前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。以题目示例为例:前序遍历划分 [ 3 | 9 | 20 15 7 ]中序遍历划分 [ 9 | 3 | 15 20 7 ]根据以上性质,可得出以下推论:前序遍历的首元素 为 树的根节点 node 的值。在中序遍历中搜索根节点 node 的索引 ,可将 中序遍历 划分为 [ 左子树 | 根节点 | 右子树 ] 。根据中序遍历中的左 / 右.

2021-08-25 15:28:41 90

原创 Python 剑指offer 06

class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] while head: res.append(head.val) head = head.next res.reverse() return res

2021-08-25 14:42:36 71

原创 Python 剑指offer 05

这题是真的快乐class Solution: def replaceSpace(self, s: str) -> str: s = s.replace(' ', '%20') return s

2021-08-25 14:40:44 73

转载 Python 剑指offer 04

解题思路:若使用暴力法遍历矩阵 matrix ,则时间复杂度为 O(NM)O(NM) 。暴力法未利用矩阵 “从上到下递增、从左到右递增” 的特点,显然不是最优解法。如下图所示,我们将矩阵逆时针旋转 45° ,并将其转化为图形式,发现其类似于 二叉搜索树 ,即对于每个元素,其左分支元素更小、右分支元素更大。因此,通过从 “根节点” 开始搜索,遇到比 target 大的元素就向左,反之向右,即可找到目标值 target 。“根节点” 对应的是矩阵的 “左下角” 和 “右上角” 元素,本文称之为 标志数.

2021-08-25 14:25:29 59

原创 Python 剑指offer 03

最容易想到的办法是双遍历,但实际不可行,消耗的内存和运行的时间都会很大解法1用字典统计数字出现的次数,如果数字已经在字典里则返回数字# 解法1class Solution1: def findRepeatNumber(self, nums) -> int: count = dict() for num in nums: if num not in count: count[num] = 1 .

2021-08-25 13:56:45 64

原创 Python 修改字符串字符

最近笔试的时候遇到了一个恶心的题目,最恶心在于某个环节需要更改字符串末尾的’,‘为’}’,而当时我忘了Python如何修改字符串方法一,切片test = '{1,2,3,'test1 = test[:-1]test1 += '}'把要修改的目标字符与周边切开,再连接上所需字符生成新的字符串即可方法二,先把字符串转换成列表,修改列表,再用join生成新的字符串test = '{1,2,3,'test2 = list(test)test2[-1] = '}'test2 = ''.join(

2021-08-23 22:46:50 732

转载 Python 程序员面试经典 面试题 02.08. 环路检测

解题思路链表是否存在环路检测链表中是否存在环路有一个方法叫做快慢指针法,即设置两个指针从起点同时出发,慢指针每移动一步快指针移动两步,如果存在环路则它们终究会相遇。难道快指针不会“越过”慢指针吗?不会。利用反证法,假设快指针真的 越过 了满指针,且快指针处于位置 i+1,而慢指针处于位置 i,那么在前一步,快指针处于位置 i-1,慢指针也处于位置 i-1,它们相遇了。何时相遇首先,快指针会离慢指针越来越远;后来,经过环路后,快指针会开始 追赶 慢指针,假设这时两者相距 kk 步,那么每.

2021-08-14 23:37:56 241

原创 Python 程序员面试经典

面试题 02.07. 链表相交要找的是交点!是指针!class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: lengthA,lengthB = 0,0 curA,curB = headA,headB while(curA!=None): #求链表A的长度 curA = curA.next

2021-08-14 23:12:01 173 1

原创 Python 程序员面试经典 面试题 02.06. 回文链表

简单class Solution: def isPalindrome(self, head: ListNode) -> bool: lst = list() cur = head while cur: lst.append(cur.val) cur = cur.next for i in range(len(lst)//2): if l.

2021-08-14 22:56:07 92

原创 Python 程序员面试经典 面试题 02.05. 链表求和

一看就懂class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: num1 = num2 = 0 head = l1 t = 1 while head: num1 += head.val*t t *= 10 head = head.next .

2021-08-14 22:31:24 192 1

原创 Python 程序员面试经典 面试题 02.04. 分割链表

快慢指针class Solution: def partition(self, head: ListNode, x: int) -> ListNode: if not head:return head p = q = head while p: if p.val < x: p.val , q.val = q.val , p.val p , q = p.

2021-08-14 21:39:56 108 1

原创 Python 程序员面试金典 面试题 02.03. 删除中间节点

直接让现在这个节点变成下一个节点就行了class Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val = node.next.val node.next = node.n.

2021-08-14 21:15:40 110

原创 Python 程序员面试金典 面试题 02.02. 返回倒数第 k 个节点

笨办法:先遍历链表得出链表长度然后就可以了class Solution: def kthToLast(self, head: ListNode, k: int) -> int: cur = head cnt = 1 while cur.next: cnt += 1 cur = cur.next cur = head for i in range.

2021-08-14 21:02:38 751 3

原创 Python 程序员面试金典 面试题 02.01. 移除重复节点

先放个易于理解的版本(额,不是链表,而是列表),还不是leetcode里那种格式的lst = [1, 3, 3, 3, 2, 1]set_lst = set(lst) //去重,留下该出现的元素lst1 = list(set_lst) //去重后的列表lst2 = [] //空表,用来存放正确顺序的列表for i in range(len(lst)): //遍历要排序的列表 for j in range(len(lst1)): //遍历去重列表 if lst[i] ==.

2021-08-09 01:40:52 147

原创 Python 程序员面试金典 面试题 01.09. 字符串轮转

先判断长度是否相同,不相同返回false,其次拼接两个s2,则如果是由s1旋转而成,则拼接后的s一定包含s1class Solution: def isFlipedString(self, s1: str, s2: str) -> bool: return len(s1) == len(s2) and s1 in s2 * 2易看懂版本class Solution: def isFlipedString(self, s1: str, s2: str) -&gt.

2021-08-08 03:56:00 236

原创 Python 程序员面试金典 面试题 01.08. 零矩阵

很简单,记住为0的元素的下标就行了,我这里用元组保存它们class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ zero_dic = dict() zero_num = 0 for i.

2021-08-08 02:32:25 161

原创 Python 程序员面试金典 面试题 01.07. 旋转矩阵

解法1-(我也不知道怎么说,观察法?)class Solution: def rotate(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """ length = len(matrix) for i in range(length - 1): ..

2021-08-08 01:40:39 104

原创 Python 程序员面试金典 面试题 01.06. 字符串压缩

class Solution(object): def compressString(self, S): n = len(S) if n <= 1: //如果字符串长度为1直接返回输入字符串 return S S += "$" //在末尾添加一个字符利于边界处理 now, cnt, ret = S[0], 1, "" //now:现在进行判断的字符,cnt:该字符出现的次数,ret为要输出的字符串 .

2021-08-08 00:54:57 178

原创 Python 程序员面试金典 1.05. 一次编辑

若长度差如果大于2,则至少需要两次改动才可一致将顺序换为first短,second长当发现不一致时,只有两种情况满足修改一次second多一个,所以判断是否first[i:] == second[i + 1:]second当前元素不一致,后面都相同,所以判断是否first[i+1:] == second[i+1:]class Solution: def oneEditAway(self, first: str, second: str) -> bool: if abs(len(.

2021-08-07 03:22:28 116

原创 Python 程序员面试金典 面试题 01.04. 回文排列

简单地说一个回文串里字符出现的次数为奇数的字符只能有一个class Solution: def canPermutePalindrome(self, s: str) -> bool: count = dict() num = 0 for char in s: count[char] = s.count(char, 0) for value in count.values(): if value%2 != 0: num +.

2021-08-07 02:09:44 109

原创 Python 程序员面试金典 面试题 01.03. URL化

这题目用Python不用动脑子,直接截取字符串用replace函数就行class Solution: def replaceSpaces(self, S: str, length: int) -> str: return S[:length].replace(" ", "%20")

2021-08-07 01:27:38 98

原创 Python 程序员面试金典 面试题 01.02. 判定是否互为字符重排

首先判断这两个字符串长度是否一致,然后判断这两个字符串是否含有不相同的字符,最后用字典统计每个字符出现的次数进行比较即可class Solution: def CheckPermutation(self, s1: str, s2: str) -> bool: if len(s1) != len(s2): return False else: set_s1 = set(s1) set_s2 = set(s2) if(set_s1 .

2021-08-07 00:53:39 183

原创 Python 程序员面试金典 面试题 01.01. 判定字符是否唯一

解法1-暴力解法:双循环class Solution: def isUnique(self, astr: str) -> bool: flag = 0 for i in range(len(astr)): for j in range(i + 1, len(astr)): if astr[i] == astr[j]: flag = 1 break if flag == 1: retur.

2021-08-06 23:30:41 225

原创 PythonGUI快速学习及使用-PySimpleGUI(四)

多个窗口import PySimpleGUI as sg # Create some widgetsok_btn = sg.Button('Open Second Window')cancel_btn = sg.Button('Cancel')layout = [[ok_btn, cancel_btn]] # Create the first Windowwindow = sg.Window('Window 1', layout) win2_active = False #

2021-06-29 20:53:20 526

原创 PythonGUI快速学习及使用-PySimpleGUI(三)

模式2A-持续性窗口使用事件循环进行多次读取)import PySimpleGUI as sg sg.theme('DarkAmber') # Keep things interesting for your userslayout = [[sg.Text('Persistent window')], [sg.Input(key='-IN-')], [sg.Button('Read'), sg.Exit()]]

2021-06-29 20:38:01 644

原创 PythonGUI快速学习及使用-PySimpleGUI(二)

模式1-一次性窗口如果不使用“事件循环”(不多次读取窗口),窗口被读取然后关闭。当“阅读”一个窗口时返回一个由event和 的字典组成的元组values。event就是导致读取返回的原因。它可能是按下按钮、单击某些文本、选择列表项等,或者WIN_CLOSED如果用户使用 X 关闭窗口。该values是所有的输入式元素的值的字典。字典使用键来定义条目。如果元素没有指定一个键,则自动提供一个。这些自动编号的键是从零开始的整数。这种设计模式没有key为InputText元素指定 a ,因此它的键将自动编

2021-06-29 20:30:02 726

原创 PythonGUI快速学习及使用-PySimpleGUI(一)

因为课设要用到pythonGUI,TkInter、PyQt、PyGUI 等流行的GUI对我来说太麻烦了短时间内出不了较好的成果,故选择PySimple学习。通常一个 PySimpleGUI 程序包含 5 个部分,见下面代码的注释:import PySimpleGUI as sg # Part 1 - 导入库# 定义窗口的内容layout = [[sg.Text("What's your name?")], # Part 2 - 排版 [sg.Input()],

2021-06-29 20:21:22 1577

原创 Python 快速排序

快速排序的核心是将列表分成三部分。首先找出基准值,然后找出比基准值小的和比基准值大的,然后对比基准值小的部分和大的部分递归使用这样的方法代码如下def quick_sort(list): if len(list) < 2: return list else: pivot = list[0] less = [i for i in list[1:] if i <= pivot] greater = [i for i

2021-06-05 20:12:19 69

原创 Python 选择排序

选择排序的核心就是对有n个元素的列表找n次最小值,然后将最小值出栈压入新创建的列表里,这样新创建的列表自然就是从小到大排序了代码如下def print_info(): lst_o = [1, 3, 9, 7, 5, 4, 6, 8] print("排序前的列表:", lst_o) return lst_odef find_smallest(lst): smallest = lst[0] smallest_index = 0 for i in rang

2021-06-05 19:38:58 87

原创 Python 二分查找与顺序查找比较

import timedef input_info(): lst = list(range(1, 10001)) target = 10000 return lst, targetdef sequential_search(lst, target): count = 0 t0 = time.perf_counter() for i in lst: count += 1 if i == target:

2021-06-02 16:27:58 124

原创 Python爬取分析动漫之家订阅量最多的漫画的标签

最近学到了网页爬虫,在打开动漫之家的时候突然想爬一下动漫之家被订阅最多的漫画的标签,看看大家都喜欢看什么漫画代码如下import requestsimport redef input_info(): """输入要爬取的网页数""" n = eval(input(print("请输入你想要爬取的网页数:"))) # 15 return ndef get_urls(n): """获取网页URL""" urls = [] for i in ran

2021-05-29 13:27:20 370

原创 Python应用列表生成式生成n行m列二维列表

代码:# 应用列表生成式生成n行m列二维列表m = eval(input('m = '))n = eval(input('n = '))Two_dimension_array = [[eval(input()) for i in range(m)] for j in range(n)]print(Two_dimension_array)测试结果:m = 3n = 3123456789[[1, 2, 3], [4, 5, 6], [7, 8, 9]]...

2021-05-22 13:47:54 2878

原创 Python列表去重

Python列表去重测试代码如下from functools import reducetest_list1 = [{'age': 12}, {'age': 12}, {'age': 13}, {'age': 13}, {'age': 14}]test_list2 = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5]func = lambda x, y: x if y in x else x + [y]test_list1 = reduce(func, [[], ]

2021-05-15 21:00:18 76

转载 形状对游戏玩家的心理产生的影响

圆形:单纯、年轻、女性化等方形:成熟、稳定、平衡、顽强等三角形:侵略、威胁、力量等

2019-03-28 17:19:50 386

空空如也

空空如也

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

TA关注的人

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