算法打卡Week7

题目:最长公共前缀
链接:https://leetcode-cn.com/problems/longest-common-prefix/

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

例一:

输入:strs = ["flower","flow","flight"]
输出:"fl"

例二:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

思路一:
将每个字符串的对应位置的字符合成一起,进行比对

def longestCommonPrefix(strs):
	"""
	:type strs: List[str]
	:rtype: str
	"""
	res = ''
	for join_str in zip(*strs):
		set_str = set(join_str)
		if len(set_str) == 1:
			res += join_str[0]
		else:
			break
	return res

思路二:
随机取一个字符串,当作公共前缀进行比对,如不匹配则长度减一,依次到无

def longestCommonPrefix(strs):
	"""
	:type strs: List[str]
	:rtype: str
	"""
	str1 = strs[0]
	size = len(strs)
	for i in range(1, size):
		while strs[i].find(str1) != 0:
			str1 = str1[:len(str1)-1]
		if not str1:
			break
	return str1

题目二:删除链表中的节点
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnarn7/

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。

例一:

输入:head = [4,5,1,9], node = 5
输出:[4,1,9]
解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

例二:

输入:head = [4,5,1,9], node = 1
输出:[4,5,9]
解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

思路:
正常来说我们删除一个链表中的节点,一般会获取要删除的节点的上一节点指针,再将上一节点的指针指向要删除节点的下一节点。
但此题并没有告知上一节点,那么我们可以将要删除的节点的下一节点的值和指针覆盖到现节点上,这样也可以实现删除的效果。

需要注意的是必须先把下一节点的值覆盖到现节点,如果先把下一节点的指针覆盖到现节点,那么原下一节点的值就会消失。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    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.next.next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值