本文主要是介绍每日一练 —2022.01.15,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一,Python编程 随机生成一个具有 20 个元素的元素值在 1-10 之间的列表
- 1,程序简介
- 2,程序代码
- 3,运行结果
- 二,螺旋矩阵
- 1,程序简介
- 示例 1:
- 示例 2:
- 提示:
- 2,程序代码
- 3,运行结果
- 三,旋转链表
- 1,程序简介
- 示例 1:
- 示例 2:
- 提示:
- 2,程序代码
- 3,运行结果
一,Python编程 随机生成一个具有 20 个元素的元素值在 1-10 之间的列表
1,程序简介
- 随机生成一个具有 20 个元素的元素值在 1-10 之间的列表,输出连续最长数的个数。
2,程序代码
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 14 19:00:45 2022
Function: Python编程 随机生成一个具有 20 个元素的元素值在 1-10 之间的列表
@author: 小梁aixj
"""
import random
a = [random.randint(1,10) for i in range(20)]
print(a)
l = rl = 1
n = rn = a[0]
for v in a[1:]:if v==n:l += 1if l>rl:rl = lrn = velse:l = 1n = v
print(f'连续最长的数是{rn},连续了{rl}次')
3,运行结果
二,螺旋矩阵
1,程序简介
- 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
- 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
- 输出:[1,2,3,6,9,8,7,4,5]
示例 2:
- 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
- 输出:[1,2,3,4,8,12,11,10,9,5,6,7]
提示:
- m == matrix.length
- n == matrix[i].length
- 1 <= m, n <= 10
- -100 <= matrix[i][j] <= 100
2,程序代码
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 14 19:01:08 2022
Function: 螺旋矩阵
@author: 小梁aixj
"""
class Solution(object):def spiralOrder(self, matrix):""":type matrix: List[List[int]]:rtype: List[int]"""if matrix is None or len(matrix) == 0:return matrixm, n = len(matrix), len(matrix[0])return self.get_spiralOrder(matrix, 0, m - 1, 0, n - 1)def get_spiralOrder(self, matrix, r_start, r_end, c_start, c_end):if r_start > r_end or c_start > c_end:return []elif r_start == r_end:return matrix[r_start][c_start:c_end + 1]elif c_start == c_end:return [matrix[j][c_end] for j in range(r_start, r_end + 1)]curr = matrix[r_start][c_start:c_end + 1] + [matrix[j][c_end] for j in range(r_start + 1, r_end)] +\matrix[r_end][c_start:c_end + 1][::-1] +\[matrix[j][c_start] for j in reversed(range(r_start + 1, r_end))]res = curr + self.get_spiralOrder(matrix, r_start + 1, r_end - 1, c_start + 1, c_end - 1)return res
if __name__ == '__main__':s = Solution()print (s.spiralOrder([[1,2,3],[4,5,6],[7,8,9]]))#输出:[1,2,3,6,9,8,7,4,5]
3,运行结果
三,旋转链表
1,程序简介
- 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。
示例 1:
- 输入:head = [1,2,3,4,5], k = 2
- 输出:[4,5,1,2,3]
示例 2:
- 输入:head = [0,1,2], k = 4
- 输出:[2,0,1]
提示:
- 链表中节点的数目在范围 [0, 500] 内
- -100 <= Node.val <= 100
- 0 <= k <= 2 * 109
2,程序代码
# -*- coding: utf-8 -*-
"""
Created on Fri Jan 14 19:01:19 2022
Function: 旋转链表
@author: 小梁aixj
"""
class ListNode(object):def __init__(self, x):self.val = xself.next = None
class LinkList:def __init__(self):self.head=Nonedef initList(self, data):self.head = ListNode(data[0])r=self.headp = self.headfor i in data[1:]:node = ListNode(i)p.next = nodep = p.nextreturn rdef convert_list(self,head):ret = []if head == None:returnnode = headwhile node != None:ret.append(node.val)node = node.nextreturn ret
class Solution(object):def rotateRight(self, head, k):""":type head: ListNode:type k: int:rtype: ListNode"""if not head or k == 0:return headslow = fast = headlength = 1while k and fast.next:fast = fast.nextlength += 1k -= 1if k != 0:k = (k + length - 1) % length return self.rotateRight(head, k)else:while fast.next:fast = fast.nextslow = slow.nextreturn self.rotate(head, fast, slow)def rotate(self, head, fast, slow):fast.next = headhead = slow.nextslow.next = Nonereturn head
# %%
l = LinkList()
list1 = [0,1,2]
k = 4
l1 = l.initList(list1)
s = Solution()
print(l.convert_list(s.rotateRight(l1, k)))
#输出:[2,0,1]
3,运行结果
这篇关于每日一练 —2022.01.15的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!