git强制拉取远端
12git fetch origingit reset --hard origin/<branch_name> 这里的 应该替换为你想要拉取的远程分支的名称。这两个命令的作用如下: git fetch origin:这个命令会从远程仓库(通常是”origin”,可以根据你的实际情况替换)获取最新的分支信息,但不会合并或应用任何更改到你的本地分支。 git reset –hard origin/:这个命令会将你的本地分支重置为与指定远程分支相同的状态,并且会放弃本地的任何更改。–hard 标志会强制应用这个重置,因此请小心使用,确保你不需要本地的更改。 这些命令将强制拉取远程分支的最新版本,并且会覆盖本地的任何更改。确保在执行这些命令之前,你没有重要的未提交更改,因为它们将永久丢失。
leetcode 1726.同积元组
Problem: 1726. 同积元组 思路 使用排列组合的方法,开始使用三种语言同时写leetcode. 解题方法 复杂度 时间复杂度: 添加时间复杂度, 示例: $O(n)$ 空间复杂度: 添加空间复杂度, 示例: $O(n)$ Code[]12345678910111213func tupleSameProduct(nums []int) int { n := len(nums) cnt := make(map[int]int) for i := 0; i < n; i++ { for j := i + 1; j < n; j++ {// j +1 不要重复 cnt[nums[i] * nums[j]]++ // 使用map 遍历每次乘积对应次数 } } ans := 0 for _, v := range cnt { ans += v * (v - 1) * 4 }...
本地运行LeetCode的Python代码 调试
最近打算开始捡起来python, 同时使用多种语言进行leetcode 训练,需要本地的调试环境,恰巧之前记录过如何在本地运行leetcode python。 大家一起来看看吧!看完就可以愉快的在本地coding啦 要在本地运行LeetCode的Python代码,你可以按照以下步骤创建一个Solution类: 创建一个Python文件(例如,leetcode_solution.py)来存放你的解决方案。 导入必要的模块。通常,你需要导入typing中的List,以及可能的其他模块,具体取决于问题的要求。 1from typing import List 创建Solution类并在其中定义问题的解决方案。例如: 1234567891011class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # 实现你的解决方案 # 例如,找到两个数的和等于目标,并返回它们的索引 num_to_index = {} ...
三种Python3 判断字典中是否存在对应key的方法
第一种:使用get()方法 生成一个字典 1dict = {'name': '','age': '','sex': ''} 打印返回值 12print(dict.get('name')) # 结果返回对应valprint(dict.get('id')) # 结果返回None 第二种:使用keys()方法 生成一个字典dict = {‘name’: ‘’,’age’: ‘’,’sex’: ‘’} 判断是否存在,其中dict.keys()是列出字典所有的key 12print('name' in dict.keys()) # 结果返回Trueprint('id' in dict.keys()) # 结果返回False 除了使用in也可以使用not in,用于判定这个key不存在 第三种:使用 in 关键字 生成一个字典 1dict =...
数据结构和操作的对比:Python vs. Go vs. C++
Python示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354# 数组my_list = [1, 2, 3, 4]# 切片sub_list = my_list[1:3]reversed_list = my_list[::-1python]# 字典my_dict = {'name': 'Alice', 'age': 30}# 双向链表(使用collections.deque)from collections import dequemy_linked_list = deque()my_linked_list.append(1)my_linked_list.append(2)my_linked_list.append(3)# 最大堆和最小堆(需要使用第三方库heapq)import heapqmax_heap = []min_heap = []#...
Leetcode 136.只出现一次的数字
Problem: 136. 只出现一次的数字[TOC] 思路 如何才能做到线性时间复杂度和常数空间复杂度呢? 答案是使用位运算。对于这道题,可使用异或运算。异或运算有以下三个性质。 任何数和 0做异或运算,结果仍然是原来的数任何数和其自身做异或运算,结果是 0 解题方法 描述你的解题方法 复杂度 时间复杂度: 添加时间复杂度, 示例: $O(n)$ 空间复杂度: 添加空间复杂度, 示例: $O(1)$ Code hash []1234567891011121314func singleNumber(nums []int) int { numsMap := make(map[int]int) for _, val := range nums { numsMap[val] += 1 } for key, val := range numsMap { if val == 1 { return key } } return 0} 位运算 []123456789func...
leetcode 155.最小栈
Problem: 155. 最小栈 思路 栈 解题方法 描使用额外栈辅助, a b c d 入栈,如果d 在那么abc 必然在,所以每次入栈比较一个最小值,放入另一个栈就好 复杂度 时间复杂度: 添加时间复杂度, 示例: $O(n)$ 空间复杂度: 添加空间复杂度, 示例: $O(n)$ Code[]12345678910111213141516171819202122232425262728293031323334353637383940// 使用额外栈辅助, a b c d 入栈,如果d 在那么abc 必然在,所以每次入栈比较一个最小值,放入另一个栈就好type MinStack struct { stack []int // 主栈 minStack []int // 辅助栈}func Constructor() MinStack { minStacks := MinStack{[]int{}, []int{math.MaxInt}} return...
使用 Go 的 container list 包:双向链表的便捷工具
Go 语言中的 container/list 包提供了一种便捷的方式来操作双向链表(doubly linked list)。这个包是标准库的一部分,旨在提供一种通用的方式来创建、操作和遍历链表。在这篇博客中,我们将介绍如何使用 container/list 包,探讨一些可能容易混淆的地方,并提供主要函数的使用示例。 基本概念在开始之前,让我们先了解一下双向链表的基本概念。双向链表是一种数据结构,其中每个节点都有两个指针,一个指向前一个节点,另一个指向后一个节点。这种结构允许我们在链表中轻松插入、删除和遍历元素。 导入 container/list 包要使用 container/list 包,首先需要导入它: 1import "container/list" 创建链表创建一个新的链表非常简单: 1myList := list.New() 这将创建一个名为 myList 的新链表。 插入元素你可以使用 PushBack 和 PushFront...
leetcode 1845. 座位预约管理系统
Problem: 1845. 座位预约管理系统 个人博客,记录学习: https://leiqicn.gitee.io/ [TOC] 思路 座位 使用n+2 长度的map或者slice. 最小值可以使用一个结构体变量来保存. 解题方法 使用slice 的index来表示座位号,1.在每次操作Unreserve的时候,记得更新seat 为可用(将对应值置为0),且要比较更新最小座位号,因为Unreserve会释放该seat.2.在每次reserve的时候, 使用中间变量返回最小座位号,因为this.min 要用来更新下一次的最小座位号.更新下一次的最小座位号,这里需要注意 i<length+1 ,slice make的时候长度要为n+2, 保证遍历到n; 复杂度 时间复杂度: 添加时间复杂度, 示例: $O(n)$ 空间复杂度: 添加空间复杂度, 示例: $O(n)$ Code使用slice []12345678910111213141516171819202122232425262728293031323334 type SeatManager...
Go 中是否使用make创建slice的区别
go slice 的make 会创建默认长度 且值为0 的slice 在 Go 语言中,可以使用 make 函数来创建切片(slice)。切片是一种动态数组,它可以在运行时动态增长或缩小。以下是使用 make 和不使用 make 创建切片的主要区别: 使用 make 创建切片: 12// 使用 make 创建切片,指定长度和容量 slice := make([]int, 5, 10) 指定长度和容量: 使用 make 创建切片时,您需要明确指定切片的长度和容量。长度是切片当前包含的元素数量,容量是底层数组的大小,通常大于或等于切片的长度。指定容量可以提高性能,因为它可以减少重新分配内存的次数。 底层数组初始化: 使用 make 创建切片时,它会自动初始化底层数组,将切片的元素都设置为其类型的零值。在上面的示例中,slice 是一个包含5个零值整数的切片。 不使用 make 创建切片: 12// 不使用 make 创建切片,长度为 5 slice := []int{1, 2, 3, 4, 5} ` 自动确定长度: 不使用 make...