力扣-234.回文链表+54.螺旋矩阵

刷力扣热题–第十三天:234.回文链表+54.螺旋矩阵
菜鸟第十三天开始奋战敲代码,持之以恒,见证成长

1.题目简介

(1)回文链表
在这里插入图片描述

(2)螺旋矩阵
在这里插入图片描述

2.题目解答

(1)回文链表
主要的思路:先得到整体长度,存储前一半的元素,之后遍历后一半与存储的列表进行对比之后,进行结果返回.时间复杂度:O(N),空间复杂度:O(N)
在这里插入图片描述
题目比较简单,所以好做,也好想.比较好过.

(2)螺旋矩阵
这道题目想的时候主要依靠在模型进行过程中的分类情况,主要分为下转弯,左转弯,上转弯和右转弯.靠四个变量去控制每次走的长度和上下界限,走的比较多的弯路来自与整个过程的截止点.
在这里插入图片描述
调了好久终于算是过了,问题分析起来比较简单,在走完第一条路径的时候,要更新上边界,转弯走完第二条边界的时候,更新右边界,走完第三条路径的时候,更新下边界,最后一条路径走完更新左边界,以此类推,并设置当两两最小边界大于最大边界之后,模型停止.

3.心得体会

简单题的难度还是相对比较简单,但中等题会觉着有较多的坑在,比较考察逻辑思维能力,多积累,多做,看看能不能把逻辑思维能力提上去.
(1)回文链表

class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        temp_head = head
        length = 0
        while temp_head:
            length += 1
            temp_head = temp_head.next
        temp_head = head
        temp = []
        i = 0
        while i < length/2:
            temp.append(temp_head.val)
            temp_head = temp_head.next
            i += 1
        if length%2: temp_head = temp_head.next
        while temp_head:
            if temp_head.val != temp[i-1]:
                return False
            temp_head = temp_head.next
            i -= 1
        return True

(2)螺旋矩阵

class Solution(object):
    def spiralOrder(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: List[int]
        """
        length_x = len(matrix)
        length_y = len(matrix[0])
        temp = []
        max_x = length_x -1
        max_y = length_y -1
        min_x = 0
        min_y = 0
        while len(temp) < length_x * length_y:
            for j in range(min_y,max_y+1):
                temp.append(matrix[min_x][j])
            min_x += 1
            for i in range(min_x,max_x+1):
                temp.append(matrix[i][max_y])
            max_y -= 1
            if min_x > max_x or min_y > max_y: break
            for j in range(max_y,min_y-1,-1):
                temp.append(matrix[max_x][j])
            max_x -= 1
            for i in range(max_x,min_x-1,-1):
                temp.append(matrix[i][min_y])
            min_y += 1
        return temp

4.做题时长

7月17日15:30-16:41 15:50-17:21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值