每日一练 —2022.01.15

2023-11-05 07:59
文章标签 15 每日 2022.01

本文主要是介绍每日一练 —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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348479

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(LeetCode) 3. 63. 不同路径 II - 力扣(LeetCode) 1. 91. 解码方法 - 力扣(LeetCode) //思路:动态规划。 cl

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

15 组件的切换和对组件的data的使用

划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

每日一题——第八十一题

打印如下图案: #include<stdio.h>int main() {int i, j;char ch = 'A';for (i = 1; i < 5; i++, ch++){for (j = 0; j < 5 - i; j++){printf(" ");//控制空格输出}for (j = 1; j < 2 * i; j++)//条件j < 2 * i{printf("%c", ch