LeetCode Hot100 刷题笔记(10)—— ACM格式输入输出练习

目录

1. 只有输出

2. 单组_A+B

3. 多组_A+B_EOF形式

4. 多组_A+B_T组形式

5. 多组_A+B_零尾形式

6. 单组_一维数组

7. 多组_二维数组_T组形式

8. 单组_二维数组

9. 多组_二维数组_T组形式

10. 单组_字符串

11. 多组_字符串_T组形式

12. 单组_二维字符数组

13. 多组_带空格的字符串_T组形式

14. 单组_保留小数位数

15. 单组_补充前导零

16. 单组_spj判断YES与NO

17. 单组_spj判断浮点误差

18. 单组_spj判断数组之和


Trick

1. list --> str: s = ''.join(lst[:])
2. str --> list: lst = list(s), lst = [i for i in lst]
3. 嵌套list展平:[[], [], [], ...] --> [...], lst = sum(lst, [])
"""
5
0 1 0 3 12

[[-1, -1, 2], [-1, 0, 1]] -->
-1 -1 2
-1 0 1
"""
# input
n = int(input())
nums = list(map(int, input().split()))
# output
for re in res:
    print(" ".join(map(str, re)))

官网连接:牛客网在线编程_算法篇_面试必刷TOP101


1. 只有输出

print("Hello Nowcoder!")

2. 单组_A+B

x, y = input().split()
x, y = int(x), int(y)
print(x+y)

3. 多组_A+B_EOF形式

import sys

for line in sys.stdin:
    a = line.split()
    print(int(a[0]) + int(a[1]))

4. 多组_A+B_T组形式

for i, line in enumerate(sys.stdin):
    if i ==0:
        continue
    a = line.split()
    print(int(a[0]) + int(a[1]))

5. 多组_A+B_零尾形式

import sys

for line in sys.stdin:
    x, y = line.split()
    x, y = int(x), int(y)
    if x or y:
        print(x+y)
    else:
        break

6. 单组_一维数组

n = int(input())
a = list(map(int, input().split()))
print(sum(a))

7. 多组_二维数组_T组形式

import sys

n = int(input())
for i in range(n):
    s = int(input())
    lst = list(map(int, input().split()))
    print(sum(lst))

8. 单组_二维数组

n, m = map(int, input().split())
lst = []
for i in range(n):
    lst.append(list(map(int, input().split())))
lst = sum(lst, [])
print(sum(lst))

9. 多组_二维数组_T组形式

z = int(input())
for z_ in range(z):
    m, n = map(int, input().split())
    lst = []
    for i in range(m):
        lst.append(list(map(int, input().split())))
    lst = sum(lst, [])
    print(sum(lst))

10. 单组_字符串

n = int(input())
s = input()
print(s[::-1])

11. 多组_字符串_T组形式

import sys

n1 = int(input())
for _ in range(n1):
    n2 = int(input())
    s = input()
    print(s[::-1])

12. 单组_二维字符数组

m, n = map(int, input().split())
lst = []
for i in range(m):
    lst.append(input())
for s in lst[::-1]:
    print(s[::-1]) 

13. 多组_带空格的字符串_T组形式

n1 = int(input())
for _ in range(n1):
    n2 = int(input())
    strs = input().split()
    strs = ''.join(strs)
    print(strs[::-1])

14. 单组_保留小数位数

n = float(input())
print(f"{n:.3f}")

15. 单组_补充前导零

n = int(input())
print(f"{n:09d}")
# print(f"{n:.3f}")

16. 单组_spj判断YES与NO

num = int(input())
if num % 2 == 0:
    print('NO')
else:
    print('YES') 

17. 单组_spj判断浮点误差

import math
r = int(input())
area = math.pi*r*r
print(f"{area:.6f}")

18. 单组_spj判断数组之和

n, m = map(int, input().split())
res = [1] * (n - 1) + [m - (n - 1)]
print(' '.join(map(str, res)))
### LeetCode Hot100 技巧与策略 LeetCodeHot100 是许多程序员提升算法能力的重要资源之一。以下是针对该部分的一些技巧和策略: #### 1. **制定合理的计划** - 推荐按照一定的顺序进行,例如优先完成热 HOT 100 和精选 TOP 面试[^1]。这些目覆盖了大部分常见的算法知识点和技术面试考点。 - 将目按难度分类(简单、中等、困难),逐步攻克不同层次的挑战。 #### 2. **利用辅助工具提高效率** - 借助公子龙大佬开发的网站及其插件功能[^2],可以更高效地查找解思路并学习经典算法框架。 - 插件能够帮助用户快速定位到某类问的核心解决方法,减少无谓的时间浪费。 #### 3. **注重总结归纳** - 对于每一道做过的目,都应该尝试分析其背后的通用模式以及可能的变化形式[^4]。比如环形链表的相关变种问(如回文链表)往往具有相似逻辑结构。 - 定期整理笔记,记录下自己容易遗忘的知识点或者巧妙的解决方案。 #### 4. **模拟真实场景训练** - 如果目标是为了准备技术面试,则建议模仿实际考试环境来进行限时答练习[^5]。这样不仅可以锻炼思维敏捷度还能增强抗压能力。 - 同时也要关注时间复杂度空间复杂度优化等方面的要求。 #### 5. **积极参与社区讨论** - 加入像寸铁这样的优质创作者所创建的学习小组或论坛,与其他志同道合者共同探讨难解答方案。 - 学习他人优秀的思维方式有助于拓宽视野开阔眼界。 下面提供一段简单的 Python 实现代码作为例子展示如何处理其中一类常见数据结构——链表的操作: ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def hasCycle(head: ListNode) -> bool: slow = fast = head while fast and fast.next: slow = slow.next # Move one step at a time. fast = fast.next.next # Move two steps at once. if slow == fast: # If there's an intersection point found. return True return False # No cycle detected after traversal completes. ``` 此函数用于检测单向链表是否存在闭环现象,采用双指针法实现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值