leetcode学python记录2

题目:1486. 数组异或操作

给你两个整数,nstart

数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length

请返回 nums 中所有元素按位异或(XOR)后得到的结果。

示例 1:

复制代码
输入:n = 5, start = 0
输出:8
解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。
     "^" 为按位异或 XOR 运算符。
python 复制代码
class Solution:
    def xorOperation(self, n: int, start: int) -> int:
        result = 0
        for i in range(n):
            nums = start + 2 * i
            result = result ^ nums
        return result

for循环:

for i in range(n): 是指下标i从0开始,遍历到n-1,每次步长为1,不用反复定义i,在for中写上即可,也可以写成for i in range(0,n,1):

for i in nums: 是指直接一个一个拿出数组中的每一个数,python没有数组只有列表。

异或操作:二进制运算,相同为0,不同为1,意为一样的就是假的,不同为真,符号'^'

运算 符号 规则(口诀)
& 全 1 才 1,有 0 就是 0
| 有 1 就 1,全 0 才 0
~ 0 变 1,1 变 0
异或 ^ 相同 0,不同 1

题目:1512. 好数对的数目

给你一个整数数组 nums

如果一组数字 (i,j) 满足 nums[i] == nums[j]i < j ,就可以认为这是一组 好数对

返回好数对的数目。

示例 1:

复制代码
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
python 复制代码
class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        good = 0
        n = len(nums)
        for i in range(n):
            for j in range(i + 1,n):
                if nums[i] == nums[j]:
                    good += 1
        return good

注:python计算数组的长度是:len(nums)

题目:1534. 统计好三元组

给你一个整数数组 arr ,以及 abc 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组

  • 0 <= i < j < k < arr.length
  • |arr[i] - arr[j]| <= a
  • |arr[j] - arr[k]| <= b
  • |arr[i] - arr[k]| <= c

其中 |x| 表示 x 的绝对值。

返回 好三元组的数量

示例 1:

复制代码
输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3
输出:4
解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。
python 复制代码
class Solution:
    def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int:
        good = 0
        n = len(arr)
        for i in range(n):
            for j in range(i + 1,n):
                if abs(arr[i] - arr[j]) > a: continue
                for k in range(j + 1,n):
                    if abs(arr[j] - arr[k]) <= b and abs(arr[i] - arr[k]) <= c:
                        good += 1 
        return good

注:python中if语句的和不是 '&&' 而是 'and' 。

题目:709. 转换成小写字母

给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

示例 1:

复制代码
输入:s = "Hello"
输出:"hello"
python 复制代码
class Solution:
    def toLowerCase(self, s: str) -> str:
        return s.lower()

注:python中可直接调用函数一键大小写而不用手搓大小写

s.lower()s字符串中全转小写,s.upper()全转大写。

另附ASCII表中 a-z 字符数据:

'A' - 'Z'=65 - 90; 'a' - 'z' = 97 - 122 。大小写差为32.

题目:258. 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

示例 1:

复制代码
输入: num = 38
输出: 2 
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
python 复制代码
#c语言枚举解法:
int addDigits(int num) {
    if(num >= 0 && num <10)
    {
        return num;
    }
    else
    {
        while(num >= 10)
        {
            num = num / 10 + num % 10;
        }
        return num;
    }
}


#python枚举解法:
class Solution:
    def addDigits(self, num: int) -> int:
        if num >= 0 and num < 10:
            return num
        while num >= 10:
            num = num // 10 + num % 10
        return num

#数字根解法:
class Solution:
    def addDigits(self, num: int) -> int:
        if num == 0:
            return 0
        if num % 9 == 0:
            return 9
        return num % 9

#一行搞定
class Solution:
    def addDigits(self, num: int) -> int:
        return (num - 1) % 9 + 1 if num else 0

这题其实就是考察 数字根:反复把各位相加,直到变为一位数。

从数学上来看数字根其实就是

数字根 = num 对 9 取余数!

只有两个特殊情况:

  1. 如果 num = 0 → 根是 0
  2. 如果 num 是 9 的倍数(且不为 0)→ 根是 9

python中整除是 '//' 而不是 '/'.

相关推荐
方安乐4 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
zh1570236 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
一只幸运猫.6 小时前
2026Java 后端面试完整版|八股简答 + AI 大模型集成技术(最新趋势)
人工智能·面试·职场和发展
Old Uncle Tom6 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
会编程的土豆6 小时前
洛谷题单入门1 顺序结构
数据结构·算法·golang
生信碱移6 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
蜡台6 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Mr.朱鹏7 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
智者知已应修善业7 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
2401_871492857 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python