自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (14)
  • 收藏
  • 关注

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

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。第一遍理解错了,以为是把链表中重复出现的值删除只剩一个。提交代码后,发现理解错了。然后重新写了代码,卡在一个点,提交的代码一直不是自己想要的,甚至在纸上写都感觉代码没有问题。今天早上,简单看下,就发现问题在哪里。这提醒我们,脑袋高糊的时候不要跟自己过不去,该休息休息。直接上代码func deleteDuplicates(..

2021-09-07 22:40:37 96

原创 242. 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。拿到这一题,第一感觉就是hash实现,直接上代码func isAnagram(s string, t string) bool { if len(s) != len(t){ return false } m := make(map[byte]int, len(s)) for i:=0;i<len(s);i++{ ...

2021-08-26 23:22:05 85

原创 234. 回文链表

给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。拿到这个题的第一念头,就是将链表数据copy到数组中,根据下标判断这个数组是否是回文,进而得到链表的结果。这个方法很简单,我专门看了下本地的挑战点,是说时间复杂度o(n),空间复杂度o(1),那这样怎么计算呢,不管我是重建数组还是重建链表,都需要空间。然后我就考虑申请两个变量,count计数变量、newHead空头指针,1、遍历链表,获取链表长度count2、遍历链表,访问到中间...

2021-08-25 23:00:59 115

原创 237. 删除链表中的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为要被删除的节点。这一题有两个坎:1、理解题意,熟练查看题目中的各种条件2、理解函数,这个函数不传链表的头指针,只传要删除的节点,也不返回。当时纠结了好久,要删除node,在不知道node节点的前一个节点的情况下,是没办法进行删除的,因此久久没有思路。最终看了思路,因为链表中各个节点的Val值不同,考虑更换node和node.Next的Val值,删除node.Next,其实这一题最重要的就是思路思路!!!..

2021-08-25 23:00:06 54

原创 226. 翻转二叉树

可能是受到学生时代的影响,我一直对于树和图都比较不喜欢的,总感觉理不清。拿到这一题,细看示例后,意识到这就是将所有的左右节点都进行交换,直接凭借着直觉就写下了代码:从根节点开始翻转左右两个节点,依次到叶子结点,一提交,发现真的没有问题,哈哈哈哈(不过这个代码的第一版,我先判断了左右节点是否为空,多此一举)func invertTree(root *TreeNode) *TreeNode { if root == nil{ return nil } t := root.Left roo...

2021-08-21 17:26:34 43

原创 231. 2 的幂

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得n == 2x ,则认为 n 是 2 的幂次方。这样的题目,大家拿到手都不会一筹莫展,第一个想法就是暴力解法,不出意外,直接提交超时func isPowerOfTwo(n int) bool { for i:=0;i<=n/2;i++{ if math.Pow(2, i) == n{ return true } } return fal.

2021-08-19 23:24:39 102

原创 228. 汇总区间

给定一个无重复元素的有序整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b其实这一题拿到的时候,我是有些没有思路的,但是想到求一个字符串最长不重复子串问题中,有两个指针分别指向符合条件区间的左区间和右区间,所以我做了如下操作,用

2021-08-18 23:50:10 57

原创 219. 存在重复元素 II

给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的 绝对值 至多为 k。拿到这道题,最直观的想法就是二层循环实现,直接上代码func containsNearbyDuplicate(nums []int, k int) bool { for i:=0;i<len(nums);i++{ for j := i+1;j<=k+i&&j<len(nums);j++{ ...

2021-08-17 23:28:43 54

原创 217. 存在重复元素

给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。这样的题目比较简单,两种思路:1、先排序,比较相邻数据;2、使用hash表,习惯性用hash表,直接上代码func containsDuplicate(nums []int) bool { flag := make(map[int]bool) for i:=0;i<len(nums);i++{ if flag[nums[i]] == 1...

2021-08-13 23:50:52 45

原创 206. 反转链表

给你单链表的头节点head,请你反转链表,并返回反转后的链表。总感觉大学的时候链表学的不错,仅限于单链表的操作就还不错。但是突然想到,像是判断链表环啊什么的,还真是没啥想法但是这个题就是会,直接上代码/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func reverseList(head *ListNode) ..

2021-08-12 22:55:55 50

原创 205. 同构字符串

给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。其实从这个描述中,我能读到s->t的映射是不重复的,但是我读不出t->s的映射也要不重复的,所以我写的代码1.0,代码提交失败"badc"- "baba"不满足func isIsomorphic(s str...

2021-08-11 00:13:05 83

原创 202. 快乐数

编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false 。我的想法很简单,就是所有的数最终都会变成0-9(待验证,直觉哈哈哈),基于此,写了如下算法,没想到还通过了func isHappy(n int) bool { for n &gt..

2021-08-09 23:50:30 48

原创 204. 计数质数

统计所有小于非负整数n的质数的数量。拿到这一题,是有思路的,也就是穷举法,写出来提交后提示超时,直接上最简单的代码func countPrimes(n int) int { if n < 2{ return 0 } count := 0 for i:=2;i<n;i++{ if isPrimes(i){ count++ } } return count}func isPrimes(n int)bool{ if n < 2{ retur..

2021-08-09 23:19:55 47

原创 169. 多数元素

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。最笨的方法就是申请一个数组记录每个元素出现的次数,最后遍历这个数据取出数据最大的,但是第一感觉这是个笨方法。考虑到go的map,可以直接统计到同一个key,上代码func majorityElement(nums []int) int { visited := make(map[int]int, len(nums)/2+1..

2021-08-06 00:09:07 53

原创 201. 数字范围按位与

给你两个整数left和right,表示区间[left, right],返回此区间内所有数字按位与的结果(包含left、right端点)。第一思路,上来就来,但是超时了,哈哈哈func rangeBitwiseAnd(left int, right int) int { result := left for left <= right{ result = result & left left++ } return result}然后我的脑子就...

2021-08-04 23:41:09 48

原创 203. 移除链表元素

给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。普通的链表操作是我比较熟悉的一个点,所以引入了两个指针,但看官方思想,可以不引入多个指针,直接一个变量即可以,可以用next表示实现/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */f...

2021-08-03 23:07:19 45

原创 位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。考虑用这个末尾的数字与1进行与运算,为1,count++;否则不增加;每次运算num>>1右移一位,上代码func hammingWeight(num uint32) int { count := 0 for num != 0{ if num & 1 == 1{ count++ } num =

2021-08-03 22:50:16 41

原创 颠倒二进制位

颠倒给定的 32 位无符号整数的二进制位。对于这个题目的类型有所误解,所以做的答案有些不对,首先将十进制数转换为二进制再转换为十进制,可能未理解题目的意思func reverseBits(num uint32) (res uint32) { var result []uint32 for num != 0 { result = append(result, num%2) num = num / 2 } var mul uint32 = 0 for i := len(resul

2021-08-02 23:46:06 94

原创 172. 阶乘后的零

给定一个整数n,返回n! 结果尾数中零的数量。首先这一题的思路:想要有0出现,得有2和5同时出现;因为5比2大,所以2一定比5先出现多。也就是5的个数也就是0出现的次数。基于这个思路,写了1.0算法,感觉这个两层循环不合理func trailingZeroes(n int) int { if n < 5{ return 0 } count := 0 for i:=5;i<=n;i=i+5{ num := i for num % 5 == 0{ coun..

2021-07-29 23:12:33 41

原创 二叉树的右视图

二叉树的右视图给定一个二叉树的根节点root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。这一题理解了以后也就不难,但刚开始接触这一题的时候,思路不太正确,甚至连广度遍历用队列都忘记了,还需要多操作,多联系,继续努力,下面来说这道题的思路:我们以队列的方式存储每一层节点,当根节点不为空时,先进行入队列的操作。循环的终止条件是队列不为空,我们这一层节点的所有左右子节点都入队列,通过内层循环来保证;因为我们是先入右节点的,所以i=0即是右视图看到的值;当..

2021-07-28 23:33:27 64

原创 Excel表列序号

给定一个Excel表格中的列名称,返回其相应的列序号。这就相当于给一个N进制数,求十进制数,只是这个N进制数是用字母表示。基于这种思路,我就写出了第一个算法:先用map表示26个字母对应的数值,然后进行依次求和运算(私下窃喜自己没有单个的赋值每一个字母,而是用了一个循环,但是看了官方说明才发现纯粹是多此一举)func titleToNumber(columnTitle string) int { intMapCha := make(map[byte]int, 26) for i :=0;i&l

2021-07-27 23:19:47 70

原创 Excel表列名称

给你一个整数columnNumber,返回它在 Excel 表中相对应的列名称。首先这个数字是A-Z,AA-AZ,BA-BZ。。。ZA-ZZ。。。依次增1的列名称,且A代表1。在自己思考的过程中,考虑过用位转换的想法,但是没有想到是十进制转26进制,且26进制是从1开始,没有0,所以有-1操作最后在输出时,还是要逆序输出的func convertToTitle(columnNumber int) string { var res []byte for columnNumber &g..

2021-07-26 22:44:50 213

原创 找出两个链表的相交点

给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。这道题自己解的时候是最笨的思路,先分别求出两个链表的长度,以短链表的长度作为循环的结束条件,以此与另一个链表比较,相等则返回,不相等长链表到末尾,短链表下移。最笨的方法,所以提交的效率也很低,直接见代码func getIntersectionNode(headA, headB *ListNode) *ListNode { if headA == nil || he...

2021-07-25 17:26:16 255

原创 顺时针打印数组

一个实现过程很艰难的题目,思路是有的,但是在设置一些参数的边界时,就经常出问题,最终代码调通,在这里说下几点总体思路:用一个变量direction来控制方向,1右,2下,3左,4上;用top,right,down,left来控制访问的边界,在设置边界初始值时,要好好考虑,我这里没次到达边界时,代表的就是不可访问的值,所有这四个的边界值为-1,len2,len1,-1用count来作为循环的结束条件(这里应该是也可以top、right、left、down来控制条件终止的)访问元素的下标用r

2021-07-24 23:53:59 42

原创 一个有序数组求twoSum

看到这个题,我理解跟之前那个解法并没有区别,可能有区别,但是我在leetcode上提交成功了。因为是有序数组,所有也可以双指针去做这件事情,附上map思路代码func twoSum(numbers []int, target int) []int { result := make(map[int]int) for key, value := range numbers{ if kk, ok := result[target-value];ok{ return []int{kk+1, ke

2021-07-21 23:45:35 61

原创 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现一个栈,最开始想着用一个值作为最小值,忘记出栈操作后这个值就会丢了;后来minStack初始化的时候,直接初始化为空数组了,也会有问题;要注意的是,push操作,stack和minStack都有一次push操作type MinStack struct { minStack []int stack []int}/** initialize your data structure here. */func Constructor() MinStack { return MinStack

2021-07-21 23:23:05 334

原创 求得有环链表中的相交点

快慢指针思路:思路有一个推理公示在里面,慢指针和快指针相遇是在环内相遇的,用a表示head到环起点的距离,b表示起点到相遇点的距离,c表示相遇点到环起点的距离先求快指针遍历过的长度:a+(n+1)b+nc慢指针遍历过的长度:a+b快慢指针有2倍的关系2(a+b)=a+(n+1)b+nc=> a=(n-1)b+nc=c+(n-1)(b+c)含义即是:a的距离就是c的距离+n倍的环的长度,所以可写出如下代码:/** * Definition for singly-linked.

2021-07-18 16:09:35 57

原创 判断链表中是否有环

就是快慢指针的逻辑,直接附代码/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func hasCycle(head *ListNode) bool { if head == nil || head.Next == nil{ return false } p := head q := head.Next for

2021-07-18 15:30:44 37

原创 求一组数组中的唯一出现的一个数

给你一个整数数组nums,除某个元素仅出现一次外,其余每个元素都恰出现三次 。请你找出并返回那个只出现了一次的元素。func singleNumber(nums []int) (value int) { result := make(map[int]int) for i:=0;i<len(nums);i++{ result[nums[i]]++ } for k := range result{ if result[k] == 1{ value = k ...

2021-07-16 23:16:43 65

原创 判断数组中仅出现一次的数

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。通过这个算法题,感觉要熟练使用异或运算,在很多场景下是最能直接解决问题的//第一错觉想法,忽略每一个数的前一个符号并不是符合自己预期的那样+-,所以结果很可能不符合预期func singleNumber(nums []int) int { sum := 0 for i:=0;i<len(nums);i++{ if i % 2 == 0{ sum += nums[i] }e

2021-07-16 22:53:04 258

原创 判断一个字符串是否是回文的

最开始考虑的是过滤掉非数字非字母字段,然后判断这个数组是否是回文的,但是没有考虑大写转小写,还是出问题了func isAlnum(c byte)bool{ if (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9'){ return true } return false}func isPalindrome(s string) bool { var s1 string s =

2021-07-15 23:50:58 59

原创 返回数据中最小未出现的正整数-缺失的第一个正数

挥洒过得很快结束

2021-07-13 23:30:35 73

原创 268. 丢失的数字

给定一个包含[0, n]中n个数的数组nums,找出[0, n]这个范围内没有出现在数组中的那个数。因为今天遇到一个类似的题目,当时就按照这种思路去做题了,写完了提交不成功,拿失败用例测试才发现,这种方法并不能保证在一轮结束后,序列变成一个有序序列,很蠢的一种做法,甚至不如直接来个排序,见代码func missingNumber(nums []int) int { for i:= 0; i<len(nums);i++{ if nums[i] != i &&amp...

2021-07-13 00:04:41 36

原创 实现一个LRU缓存机制

设计一个lru机制,首先是思路:首先用一个双向链表来存储一个节点type DLinkNode struct{ key, value int pre, next *DLinkNode}整个LRU包括当前长度、容量、头节点、尾节点、hash存储type LRUCache struct { size int capacity int cache map[int]*DLinkNode head, tail *DLinkNode}数据结构定义好以后,就是操作了,主要包括,初始

2021-07-11 21:11:59 376

原创 反转单链表

这里有一点要注意的是,p的next要在t复制next之前,否则的p的next会发生改变,详情见代码package mainimport . "nc_tools"/* * type ListNode struct{ * Val int * Next *ListNode * } *//** * * @param pHead ListNode类 * @return ListNode类*/func ReverseList( pHead *ListNode ) *List

2021-07-11 17:10:56 51

原创 面试合集记录之一

1、构建一种死锁的场景线程T1需要先后访问资源A和B,线程T2需要先后访问资源B和A;T1先对A进行上锁处理,T2先对B进行上锁处理;T1在访问B时,B被占用,进入阻塞;T2在访问A时,A被占用,进入阻塞2、...

2021-07-11 14:55:20 108

原创 杨辉三角二leetcode

给定一个数值,返回该值+1行对应的值,跟上一题的区别是我们不需要申请一个二维数组去存储这所有的值,只需要两个一维数组在保存当前的值及前一行的值,代码如下:注意2点:1、i的下标要取到rowIndex2、pre每次被赋值为curfunc getRow(rowIndex int) []int { var pre, cur []int for i:=0;i<=rowIndex;i++{ cur = make([]int, rowIndex+1) cur[0] = 1 cur

2021-07-10 17:37:47 27

原创 杨辉三角输出leetcode

杨辉三角大家都知道是什么,可能早期学C语言的时候也都写过代码输出这些值所以看到这个题也没有感觉很难,但是自己在写代码的时候遇到一些问题1、针对结果返回,make的时候要申请二维数组的空间2、在每一次循环时,要申请对应一维数组的空间,而且下标i代表第i+1行,所以每次申请空间的时候要申请i+13、j代表每一列的值,它的终止条件看的是ifunc generate(numRows int) [][]int { result :=make([][]int, numRows) for i:=

2021-07-10 16:58:49 53

原创 路径总和leetcode

对一棵树进行遍历,从根节点到叶子结点遍历节点的和如果等于目标值sum,返回true,否则返回false,递归算法如下所示如果根节点为空,返回false如果根节点没有左右子树,判断sum与根节点的值是否一致,一致返回true否则,对根节点的左子树和右子树进行遍历/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right

2021-07-10 16:32:40 55

原创 求二叉树的最小深度

求一颗二叉树的最小深度,考虑以下情况如果根节点为空,返回0;如果根节点无左右子节点,返回1;否则,如果左节点不为空,返回左子树和最小值的更小值;如果右节点不为空,返回右子树和最小值的更小值时常温习下吧,哈哈哈哈哈/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */

2021-07-09 23:11:58 93 2

IE7 单文件版 免安装版

IE7 可直接解压使用,可离线安装,试了那么多,这是唯一可用的

2017-08-29

IE7免安装版

IE7 不需要安装 解压即可使用

2017-08-29

USB访问需要的头文件

包括需要开发USB所需要的各种头文件,也有hid.lib文件

2015-05-25

hidsdi.h,hidpi.h,hidpddi.h

使用USB开发使用的,需要打开hidsdi,直接自己编写的时候一直出现错误 原来是需要下载这些包

2015-05-22

HDOJ(杭州电子科技大学)

杭州电子科技大学online jugle的离线版题目

2014-03-09

图书管理系统java

这是图书管理系统,实现了图书借阅查询,用户信息的管理,希望对大家有用等

2013-10-20

vc网络聊天室源代码

这是网络聊天室的C++代码 个人觉得还挺好用的 希望对大家有用

2013-10-14

java超市管理系统

这是用java编写的超市管理系统 至于可不可以运行 大家可以下载试试

2013-10-14

超市管理系统

一个java编写的超市管理系统,希望对大家有用

2013-10-14

java人事管理系统

在网上下载的 据说是用java编写的人事管理系统 希望对你有用

2013-10-14

AI五子棋算法

这个可以在你写MFC下的人机对战  可以实现电脑AI功能

2013-09-03

2014考研英语十年真题超精读考案

康老师2012考研英语十年真题超精读考案(基础篇1990-200年真题).pdf

2013-04-18

Unix-Linux

是一本适合基础薄弱的人看得书,一步步认识linux

2013-04-10

空空如也

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

TA关注的人

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