【golang】leetcode初级-最长公共前缀&删除链表中的节点

第一题 最长公共前缀 题目信息
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
解题思路
按顺序对字符串切片进行一次遍历,对每个字符串的首个字符进行查找
若字符都相同,则将该字符加入返回的字符串变量,并查找下一字符
若字符不同,则直接返回
代码

func getch(str string,n int)rune{ for i, r := range str { if i==n{ return r } } return 0 } func longestCommonPrefix(strs []string) string { var res string var n int var c rune for { c=getch(strs[0],n) for _, str := range strs { if getch(str,n)==0{return res} if getch(str,n)!=c{ return res } } res=res+string(c) n++ } }

复杂度分析
【golang】leetcode初级-最长公共前缀&删除链表中的节点
文章图片

时间复杂度:O(len(res)*len(strs)) 返回的字符串长度每加一,就要多做一边循环;每做一遍循环,就要遍历一次字符串切片的所有字符串;
空间复杂度:O(1) 常数级空间
官方解析
https://leetcode-cn.com/probl...
由于本题难度较低,官方四种答案的执行时间和内存消耗并没有多少显著的差别,在此不做深入讨论
第二题 删除链表中的节点 题目信息
请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。
题目数据保证需要删除的节点 不是末尾节点 。
【golang】leetcode初级-最长公共前缀&删除链表中的节点
文章图片

【golang】leetcode初级-最长公共前缀&删除链表中的节点
文章图片

【golang】leetcode初级-最长公共前缀&删除链表中的节点
文章图片

解题思路
题目的要求为
传入的参数即为指向待删除的节点,且由于是单链表,无法向前访问
题目保证了删除的节点不是末尾节点,提示了我们该节点必定拥有next节点

【golang】leetcode初级-最长公共前缀&删除链表中的节点
文章图片

代码
func deleteNode(node *ListNode) { node.Val = node.Next.Val node.Next = node.Next.Next }

复杂度分析
时间复杂度:O(1)。
【【golang】leetcode初级-最长公共前缀&删除链表中的节点】空间复杂度:O(1)。

    推荐阅读