字节青训-判断数组是否单调、判断回旋镖的存在、字符串解码问题、小F的矩阵值调整、数字字符串中圆圈的数量计算 、小Q的非素数和排列问题

目录

一、判断数组是否单调

问题描述

测试样例

解题思路:

解题思路

数据结构选择

算法步骤

 最终代码:

运行结果:

​编辑 

 二、判断回旋镖的存在

问题描述

测试样例

解题思路: 

解题思路

算法步骤

最终代码:

运行结果:

​编辑 

三、字符串解码问题

问题描述

测试样例

 解题思路:

问题理解

数据结构选择

算法步骤

具体步骤

 最终代码:

运行结果:

​编辑 

四、小F的矩阵值调整

问题描述

测试样例

解题思路:

问题理解

数据结构选择

算法步骤

最终代码:

运行结果:

​编辑 

五、数字字符串中圆圈的数量计算 

问题描述

测试样例

解题思路: 

 

问题理解

数据结构选择

算法步骤

具体步骤

最终代码:

运行结果:

​编辑 

 六、小Q的非素数和排列问题

问题描述

测试样例

 解题思路

问题理解

数据结构选择

算法步骤

关键点

最终代码:

运行结果:

​编辑 

 


一、判断数组是否单调

问题描述

小S最近在研究一些数组的性质,她发现有一种非常有趣的数组被称为 单调数组。如果一个数组是单调递增或单调递减的,那么它就是单调的。

  • 当对于所有索引i <= j时,nums[i] <= nums[j],数组nums是单调递增的。
  • 当对于所有索引i <= j时,nums[i] >= nums[j],数组nums是单调递减的。

你需要编写一个程序来判断给定的数组nums是否为单调数组。如果是,返回true,否则返回false


测试样例

样例1:

输入:nums = [1, 2, 2, 3]
输出:True

样例2:

输入:nums = [6, 5, 4, 4]
输出:True

样例3:

输入:nums = [1, 3, 2, 4, 5]
输出:False

解题思路:

要判断一个数组是否为单调数组,我们需要检查数组是否满足以下两个条件之一:

  1. 单调递增:对于所有索引 i <= jnums[i] <= nums[j]
  2. 单调递减:对于所有索引 i <= jnums[i] >= nums[j]

解题思路

  1. 初始化标志

    • 我们可以使用两个布尔变量 isIncreasing 和 isDecreasing 来分别表示数组是否单调递增和单调递减。
    • 初始时,将这两个变量都设置为 true
  2. 遍历数组

    • 从数组的第二个元素开始,逐个比较当前元素和前一个元素。
    • 如果当前元素小于前一个元素,则将 isIncreasing 设置为 false
    • 如果当前元素大于前一个元素,则将 isDecreasing 设置为 false
  3. 判断结果

    • 遍历结束后,如果 isIncreasing 或 isDecreasing 中有一个为 true,则说明数组是单调的,返回 true
    • 否则,返回 false

数据结构选择

  • 使用布尔变量来记录数组的单调性。

算法步骤

  1. 初始化 isIncreasing 和 isDecreasing 为 true
  2. 遍历数组,比较相邻元素。
  3. 根据比较结果更新 isIncreasing 和 isDecreasing
  4. 返回 isIncreasing 或 isDecreasing 中为 true 的结果。

 最终代码:

#include <iostream>
#include <vector>
using namespace std;bool solution(vector<int> nums) {// 初始化标志变量bool isIncreasing = true;bool isDecreasing = true;// 遍历数组,从第二个元素开始for (int i = 1; i < nums.size(); ++i) {// 如果当前元素小于前一个元素,则数组不是单调递增if (nums[i] < nums[i - 1]) {isIncreasing = false;}// 如果当前元素大于前一个元素,则数组不是单调递减if (nums[i] > nums[i - 1]) {isDecreasing = false;}}// 如果数组是单调递增或单调递减,返回 truereturn isIncreasing || isDecreasing;
}int main() {bool result1 = solution(vector<int>{1, 2, 2, 3});bool result2 = solution(vector<int>{6, 5, 4, 4});bool result3 = solution(vector<int>{1, 3, 2, 4, 5});cout << (result1 == true) << endl;cout << (result2 == true) << endl;cout << (result3 == false) << endl;
}

运行结果:

 二、判断回旋镖的存在

问题描述

小M正在玩一个几何游戏,给定一个二维平面上的三个点 points,其中每个点用坐标 points[i] = [xi, yi] 表示。如果三点构成一个回旋镖,则返回 true。回旋镖的定义是三点不在一条直线上,并且这三个点互不相同。

请你帮助小M判断这些点是否构成一个回旋镖。


测试样例

样例1:

输入:points = [[1, 1], [2, 3], [3, 2]]
输出:True

样例2:

输入:points = [[1, 1], [2, 2], [3, 3]]
输出:False

样例3:

输入:points = [[0, 0], [1, 1], [1, 0]]
输出:True

解题思路: 

要判断三个点是否构成一个回旋镖,我们需要确保以下几点:

  1. 三点不共线:三个点不能在同一条直线上。可以通过计算斜率来判断。如果三个点的斜率不同,则它们不共线。

  2. 三点互不相同:三个点的坐标不能完全相同。

解题思路

  1. 计算斜率

    • 对于点 A(x1, y1) 和点 B(x2, y2),斜率公式为 (y2 - y1) / (x2 - x1)
    • 为了避免除零错误,可以使用乘法来比较斜率:(y2 - y1) * (x3 - x1) 和 (y3 - y1) * (x2 - x1)。如果这两个值不相等,则三点不共线。
  2. 检查点是否相同

    • 直接比较三个点的坐标,确保它们互不相同。

算法步骤

  1. 检查三个点是否互不相同。
  2. 计算并比较斜率,判断三点是否共线。

最终代码:

#include <iostream>
#include <vector>
using namespace std;bool solution(vector<vector<int>>& points) {// 获取三个点的坐标int x1 = points[0][0], y1 = points[0][1];int x2 = points[1][0], y2 = points[1][1];int x3 = points[2][0], y3 = points[2][1];// 检查三个点是否互不相同if (x1 == x2 && y1 == y2) return false;if (x1 == x3 && y1 == y3) return false;if (x2 == x3 && y2 == y3) return false;// 计算并比较斜率// 使用乘法来避免除零错误// 如果 (y2 - y1) * (x3 - x1) 不等于 (y3 - y1) * (x2 - x1),则三点不共线if ((y2 - y1) * (x3 - x1) != (y3 - y1) * (x2 - x1)) {return true;}return false;
}int main() {vector<vector<int>> v1 = {{1, 1}, {2, 3}, {3, 2}};vector<vector<int>> v2 = {{1, 1}, {2, 2}, {3, 3}};vector<vector<int>> v3 = {{0, 0}, {1, 1}, {1, 0}};cout << (solution(v1) == true) << endl;cout << (solution(v2) == false) << endl;cout << (solution(v3) == true) << endl;return 0;
}

运行结果:

三、字符串解码问题

问题描述

小R正在处理一个包含小写字母的字符串解码问题。给定一个长度为N的字符串S,其中包含小写英文字母。字符串的解码规则如下:

  1. 字符 'x' 应解码为 'y',字符 'y' 应解码为 'x'
  2. 字符 'a' 应解码为 'b',字符 'b' 应解码为 'a'
  3. 所有其他字符保持不变。

你的任务是返回解码后的字符串。


测试样例

样例1:

输入:N = 5, S = "xaytq"
输出:'ybxtq'

样例2:

输入:N = 6, S = "abcxyz"
输出:'bacyxz'

样例3:

输入:N = 3, S = "zzz"
输出:'zzz'

 解题思路:

问题理解

我们需要根据给定的规则对字符串进行解码。具体规则如下:

  1. 字符 'x' 应解码为 'y',字符 'y' 应解码为 'x'
  2. 字符 'a' 应解码为 'b',字符 'b' 应解码为 'a'
  3. 所有其他字符保持不变。

数据结构选择

由于我们只需要对字符串中的每个字符进行简单的替换操作,因此不需要复杂的数据结构。我们可以直接使用字符串和字符数组来处理。

算法步骤

  1. 遍历字符串:我们需要遍历字符串中的每一个字符。
  2. 替换字符:根据字符的不同,进行相应的替换操作。
  3. 构建结果字符串:将替换后的字符逐个添加到结果字符串中。

具体步骤

  1. 创建一个空的结果字符串。
  2. 遍历输入字符串的每一个字符:
    • 如果字符是 'x',将其替换为 'y'
    • 如果字符是 'y',将其替换为 'x'
    • 如果字符是 'a',将其替换为 'b'
    • 如果字符是 'b',将其替换为 'a'
    • 其他字符保持不变。
  3. 将替换后的字符添加到结果字符串中。
  4. 返回结果字符串。

 最终代码:

#include <iostream>
#include <string>std::string solution(int N, const std::string& S) {// 创建一个空的结果字符串std::string result = "";// 遍历输入字符串的每一个字符for (char c : S) {// 根据字符的不同,进行相应的替换操作if (c == 'x') {result += 'y';} else if (c == 'y') {result += 'x';} else if (c == 'a') {result += 'b';} else if (c == 'b') {result += 'a';} else {// 其他字符保持不变result += c;}}// 返回结果字符串return result;
}int main() {std::cout << (solution(5, "xaytq") == "ybxtq") << std::endl;std::cout << (solution(6, "abcxyz") == "bacyxz") << std::endl;std::cout << (solution(3, "zzz") == "zzz") << std::endl;
}

运行结果:

四、小F的矩阵值调整

问题描述

小F得到了一个矩阵。如果矩阵中某一个格子的值是偶数,则该值变为它的三倍;如果是奇数,则保持不变。小F想知道调整后的矩阵是什么样子的。


测试样例

样例1:

输入:a = [[1, 2, 3], [4, 5, 6]]
输出:[[1, 6, 3], [12, 5, 18]]

样例2:

输入:a = [[7, 8, 9], [10, 11, 12]]
输出:[[7, 24, 9], [30, 11, 36]]

样例3:

输入:a = [[2, 4], [6, 8]]
输出:[[6, 12], [18, 24]]

解题思路:

问题理解

你需要处理一个矩阵,矩阵中的每个元素如果是偶数,则将其值变为原来的三倍;如果是奇数,则保持不变。最终返回调整后的矩阵。

数据结构选择

  • 输入是一个二维的整数矩阵,可以使用 vector<vector<int>> 来表示。
  • 输出也是一个二维的整数矩阵,同样使用 vector<vector<int>> 来表示。

算法步骤

  1. 遍历矩阵:使用嵌套循环遍历矩阵中的每一个元素。
  2. 判断奇偶性:对于每一个元素,判断其是否为偶数。
    • 如果是偶数,将其值变为原来的三倍。
    • 如果是奇数,保持不变。
  3. 返回结果:遍历完成后,返回调整后的矩阵。

最终代码:

#include <vector>
#include <iostream>
using namespace std;vector<vector<int>> solution(vector<vector<int>> a) {// 遍历矩阵中的每一个元素for (int i = 0; i < a.size(); ++i) {for (int j = 0; j < a[i].size(); ++j) {// 判断当前元素是否为偶数if (a[i][j] % 2 == 0) {// 如果是偶数,将其值变为原来的三倍a[i][j] *= 3;}// 如果是奇数,保持不变(不需要额外操作)}}// 返回调整后的矩阵return a;
}int main() {cout << (solution({{1, 2, 3}, {4, 5, 6}}) == vector<vector<int>>{{1, 6, 3}, {12, 5, 18}}) << endl;cout << (solution({{7, 8, 9}, {10, 11, 12}}) == vector<vector<int>>{{7, 24, 9}, {30, 11, 36}}) << endl;cout << (solution({{2, 4}, {6, 8}}) == vector<vector<int>>{{6, 12}, {18, 24}}) << endl;return 0;
}

运行结果:

五、数字字符串中圆圈的数量计算 

问题描述

小I拿到了一串数字字符,她想知道这串数字中一共有多少个圆圈。具体规则如下:

  • 数字0、6、9各含有一个圆圈。
  • 数字8含有两个圆圈。
  • 其他数字不含有任何圆圈。

测试样例

样例1:

输入:s = "1234567890"
输出:5

样例2:

输入:s = "8690"
输出:5

样例3:

输入:s = "1111"
输出:0

解题思路: 

问题理解

你需要计算一个字符串中所有数字字符的圆圈总数。每个数字字符的圆圈数量如下:

  • 数字 069 各含有一个圆圈。
  • 数字 8 含有两个圆圈。
  • 其他数字不含有任何圆圈。

数据结构选择

由于我们只需要遍历字符串中的每个字符并计算其对应的圆圈数量,因此不需要复杂的数据结构。我们可以使用一个简单的数组或映射来存储每个数字字符对应的圆圈数量。

算法步骤

  1. 初始化一个数组或映射,存储每个数字字符对应的圆圈数量。
  2. 遍历字符串中的每个字符,根据字符查找对应的圆圈数量并累加。
  3. 返回累加的结果

具体步骤

  1. 创建一个数组 circleCount,其中 circleCount[i] 表示数字 i 的圆圈数量。
  2. 遍历输入字符串 s,对于每个字符 c,将其转换为对应的数字 digit,然后累加 circleCount[digit] 到总数中。
  3. 返回累加的总数。

最终代码:

#include <iostream>
#include <string>int solution(const std::string& s) {// 初始化圆圈数量数组int circleCount[10] = {1, 0, 0, 0, 0, 0, 1, 0, 2, 1}; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9// 初始化圆圈总数int totalCircles = 0;// 遍历字符串并累加圆圈数量for (char c : s) {int digit = c - '0'; // 将字符转换为对应的数字totalCircles += circleCount[digit]; // 累加圆圈数量}// 返回累加的结果return totalCircles;
}int main() {std::cout << (solution("1234567890") == 5) << std::endl;std::cout << (solution("8690") == 5) << std::endl;std::cout << (solution("1111") == 0) << std::endl;
}

运行结果:

 六、小Q的非素数和排列问题

问题描述

小C对排列很感兴趣,她想知道有多少个长度为n的排列满足任意两个相邻元素之和都不是素数。排列定义为一个长度为n的数组,其中包含从1到n的所有整数,每个数字恰好出现一次。


测试样例

样例1:

输入:n = 5
输出:4

样例2:

输入:n = 3
输出:0

样例3:

输入:n = 6
输出:24

 解题思路

问题理解

我们需要找到长度为 n 的排列,使得任意两个相邻元素之和都不是素数。排列是一个包含从 1 到 n 的所有整数的数组,每个数字恰好出现一次。

数据结构选择

由于我们需要生成和检查排列,可以使用递归或迭代的方式来生成所有可能的排列,并检查每个排列是否满足条件。

算法步骤

  1. 生成排列:可以使用递归或迭代的方式生成所有可能的排列。
  2. 检查相邻元素之和:对于每个生成的排列,检查相邻元素之和是否为素数。
  3. 统计满足条件的排列:如果一个排列满足条件,则计数加一。

关键点

  • 素数判断:需要一个函数来判断一个数是否为素数。
  • 排列生成:可以使用递归或迭代的方式生成所有排列。

最终代码:

#include <iostream>
#include <vector>
#include <cmath>// 判断一个数是否为素数
bool is_prime(int num) {if (num <= 1) return false;if (num == 2) return true;if (num % 2 == 0) return false;for (int i = 3; i <= std::sqrt(num); i += 2) {if (num % i == 0) return false;}return true;
}// 递归生成排列并检查
void generate_permutations(int n, std::vector<int>& current_permutation, std::vector<bool>& used, int& count) {if (current_permutation.size() == n) {// 检查当前排列是否满足条件bool valid = true;for (int i = 0; i < n - 1; ++i) {if (is_prime(current_permutation[i] + current_permutation[i + 1])) {valid = false;break;}}if (valid) {count++;}return;}for (int i = 1; i <= n; ++i) {if (!used[i]) {// 剪枝:如果当前排列的最后一个元素与i的和是素数,则跳过if (!current_permutation.empty() && is_prime(current_permutation.back() + i)) {continue;}current_permutation.push_back(i);used[i] = true;generate_permutations(n, current_permutation, used, count);current_permutation.pop_back();used[i] = false;}}
}int solution(int n) {std::vector<bool> used(n + 1, false);std::vector<int> current_permutation;int count = 0;generate_permutations(n, current_permutation, used, count);return count;
}int main() {std::cout << (solution(5) == 4) << std::endl;std::cout << (solution(3) == 0) << std::endl;std::cout << (solution(6) == 24) << std::endl;
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/474593.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArkTS组件结构和状态管理

1. 认识基本的组件结构 ArkTS通过装饰器Component 和Entry 装饰 struct 关键字声明的数据结构&#xff0c;构成一个自定义组件 自定义组件中提供了一个build函数&#xff0c;开发者需要在函数内以链式调用的方式进行基本的UI描述&#xff0c;UI描述的方法请参考UI描述规范srtuc…

14. 乘法口诀挑战赛

文章目录 概要整体架构流程技术细节小结 1. 概要 ~ Jack Qiao对米粒说&#xff1a;“为了帮助孩子们更好地学习乘法&#xff0c;智慧镇的镇长决定举办一场特别的活动——“乘法口诀挑战赛”。比赛的规则非常简单&#xff1a;参与者需要输入一个正整数 n&#xff0c;然后系统会…

环形缓冲区 之 STM32 串口接收的实现

STM32串口数据接收环形缓冲区接收实例说明 ...... 矜辰所致前言 关于环形缓冲区&#xff0c;网上有大量的理论说明文章&#xff0c;在有些操作系统中&#xff0c;会有实现环形缓冲区的代码&#xff0c;比如 RT-Thread 的 ringbuffer.c 和 ringbuffer.h 文件&#xff0c;Li…

Matplotlib | 理解直方图中bins表示的数据含义

引出问题 hist作图中 bins 发生变换 y轴的数据也变化 想不通 不是说y轴计算的是频率吗 频率既然是定值 为什么y轴的数据就还会变化&#xff1f;那我确定了bins的数值 我想获得bins内各个柱子&#xff08;bin&#xff09;中数据点的数量如何获得 bins的变化 先看一组数据 da…

【Linux】基础02

Linux编译和调试 VI编辑文件 vi : 进入文件编辑 是命令行模式 i &#xff1a;从光标处进入插入模式 dd : 删除光标所在行 n dd 删除指定行数 Esc &#xff1a; 退出插入模式 &#xff1a; 冒号进入末行模式 :wq : 保存退出 :q &#xff1a; 未修改文件可以退出 :q! …

Linux网络——套接字编程

1. 网络通信基本脉络 基本脉络图如上&#xff0c;其中数据在不同层的叫法不一样&#xff0c;比如在传输层时称为数据段&#xff0c;而在网络层时称为数据报。我们可以在 Linux 中使用 ifconfig 查看网络的配置&#xff0c;如图 其中&#xff0c;inet 表示的是 IPv4&#xff0c;…

深度学习的实践层面

深度学习的实践层面 设计机器学习应用 在训练神经网络时&#xff0c;超参数选择是一个高度迭代的过程。我们通常从一个初步的模型框架开始&#xff0c;进行编码、运行和测试&#xff0c;通过不断调整优化模型。 数据集一般划分为三部分&#xff1a;训练集、验证集和测试集。常…

Jmeter 如何导入证书并调用https请求

Jmeter 如何导入证书并调用https请求 通过SSL管理器添加证书文件 支持添加的文件为.p12&#xff0c;.pfx&#xff0c;.jks 如何将pem文件转换为pfx文件&#xff1f; 在公司内部通常会提供3个pem文件。 ca.pem&#xff1a;可以理解为是根证书&#xff0c;用于验证颁发的证…

LabVIEW 温湿度测试与监控系统

煤炭自燃是煤矿和煤炭储存领域面临的重大安全隐患&#xff0c;尤其是在煤炭堆积和运输过程中&#xff0c;温湿度变化会直接影响煤体的氧化速率和自燃倾向。传统的监测手段通常存在实时性差、数据处理复杂等问题&#xff0c;难以准确评估煤自燃的风险。因此&#xff0c;设计了一…

IDEA 开发工具常用快捷键有哪些?

‌在IDEA中&#xff0c;输出System.out.println()的快捷键是sout&#xff0c;输入后按回车&#xff08;或Tab键&#xff09;即可自动补全为System.out.println()‌‌。 此外&#xff0c;IDEA中还有一些其他常用的快捷键&#xff1a; 创建main方法的快捷键是psvm&#xff0c;代…

KF UKF

我需要Kalman 现在&#xff0c;主要是用来处理检测问题情况里的漏检&#xff0c;因为模拟了一段2D&#xff0c; &#xff08;x&#xff0c;y&#xff09;的数据&#xff0c;为了看效果&#xff0c;画的线尽量简单一点&#xff1a; import numpy as np import matplotlib.pyplo…

多品牌摄像机视频平台EasyCVR视频融合平台+应急布控球:打造城市安全监控新体系

在当今快速发展的智慧城市和数字化转型浪潮中&#xff0c;视频监控技术已成为提升公共安全、优化城市管理、增强应急响应能力的重要工具。EasyCVR视频监控平台以其强大的多协议接入能力和多样化的视频流格式分发功能&#xff0c;为用户提供了一个全面、灵活、高效的视频监控解决…

第8章硬件维护-8.2 可维护性和可靠性验收

8.2 可维护性和可靠性验收 可维护性和可靠性验收非常重要&#xff0c;硬件维护工程师在后端发现问题后&#xff0c;总结成可维护性和可靠性需求&#xff0c;在产品立项的时候与新特性一起进行需求分析&#xff0c;然后经过设计、开发和测试环节&#xff0c;在产品中落地。这些需…

医学图像语义分割:前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室

医学图像语义分割&#xff1a;前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室 语义分割网络FCN&#xff1a;通过将全连接层替换为卷积层并使用反卷积上采样&#xff0c;实现了第一个端到端的像素级分割网络U-Net&#xff1a;采用对称的U形编解码器结构&#xff…

如何解决多系统数据重复与冲突问题?

多系统并行运作已成为现代企业的常态。企业通常同时使用ERP、CRM、HR等多个业务系统来管理不同的功能模块。然而&#xff0c;这种多系统环境也带来了一个常见且棘手的问题&#xff1a;数据重复与矛盾。由于各系统独立运行且缺乏有效的集成机制&#xff0c;不同系统间的数据容易…

麒麟时间同步搭建chrony服务器

搭建chrony服务器 在本例中&#xff0c;kyserver01&#xff08;172.16.200.10&#xff09;作为客户端&#xff0c;同步服务端时间&#xff1b;kyserver02&#xff08;172.16.200.11&#xff09;作为服务端&#xff0c;提供时间同步服务。 配置服务端&#xff0c;修改以下内容…

【GPTs】Ai-Ming:AI命理助手,个人运势与未来发展剖析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;Ai-Ming主要功能适用场景优点缺点 &#x1f4af;小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; defcomplete_sexagenary&#xff08;年&a…

Chainlit快速实现AI对话应用将聊天记录的持久化到MySql关系数据库中

概述 默认情况下&#xff0c;Chainlit 应用不会保留其生成的聊天和元素。即网页一刷新&#xff0c;所有的聊天记录&#xff0c;页面上的所有聊天记录都会消失。但是&#xff0c;存储和利用这些数据的能力可能是您的项目或组织的重要组成部分。 之前写过一篇文章《Chainlit快速…

【动手学深度学习Pytorch】6. LeNet实现代码

LeNet&#xff08;LeNet-5&#xff09;由两个部分组成&#xff1a;卷积编码器和全连接层密集块 x.view(): 对tensor进行reshape import torch from torch import nn from d2l import torch as d2lclass Reshape(torch.nn.Module):def forward(self, x):return x.view(-1, 1, 28…

AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!

文章推荐 AI工具百宝箱&#xff5c;使用Deep Live Cam&#xff0c;上传一张照片就可以实现实时视频换脸...简直太逆天&#xff01; Anychat 这是一款可以与任何模型聊天 &#xff08;chatgpt、gemini、perplexity、claude、metal llama、grok 等&#xff09;的应用。 在页面…