当前位置: 首页 > article >正文

算法:前缀和

1.【模版】前缀和

【模板】前缀和_牛客题霸_牛客网

这道题如果使用暴力解法时间复杂度为O(n*m),会超时,所以要使用前缀和算法。

前缀和->快速求出数组中某一个连续区间的和。

第一步:预处理出一个前缀和数组 dp。

        dp[i]表示[1, i] 区间内所有元素的和,dp[i] = dp[i - 1] + arr[i]。

第二步:使用前缀和数组

        要求[l, r] 区间的值,就等于dp[r] - dp[l - 1]。

#include <iostream>
#include <vector>
using namespace std;int main() 
{int n, m;cin >> n >> m;vector<int> arr(n + 1);for(int i = 1; i < n + 1; i++)//输入数组{cin >> arr[i];}vector<long long> dp(n + 1);for(int i = 1; i < n + 1; i++)//初始化dp数组{dp[i] = dp[i - 1] + arr[i];}int left = 0, right = 0;while(m--){cin >>left >> right;cout << dp[right] - dp[left - 1] << endl;}return 0;
}

2.【模版】二维前缀和

【模板】二维前缀和_牛客题霸_牛客网

和上题一样,使用前缀和,定义一个和原二维数组大小相同的dp矩阵,初始化dp矩阵:

使用dp矩阵:

#include <iostream>
#include <vector>
using namespace std;int main() 
{//读入数据int n,m,q;cin>> n >> m >> q;vector<vector<long long>> arr(n + 1, vector<long long>(m + 1));for(int i = 1; i < n + 1 ; i++){for(int j = 1; j < m + 1; j++){cin >> arr[i][j];}}//预处理前缀和矩阵vector<vector<long long>> dp(n + 1, vector<long long>(m + 1));for(int i = 1; i < n + 1 ; i++){for(int j = 1; j < m + 1; j++){dp[i][j] = dp[i - 1][j] + dp[i][j - 1] + arr[i][j] -dp[i - 1][j - 1];}}//使用前缀和矩阵int x1,y1,x2,y2;while(q--){cin >> x1 >> y1 >> x2 >> y2;long long ret = dp[x2][y2] - dp[x1 - 1][y2] - dp[x2][y1 - 1] + dp[x1 - 1][y1 - 1];cout << ret <<endl;}return 0;
}
// 64 位输出请用 printf("%lld")

3.寻找数组的中心下标

724. 寻找数组的中心下标 - 力扣(LeetCode)

 方法一:遍历数组,求出数组的总值total,

当遍历到第 i 个元素时,设其左侧元素之和为 sum,则其右侧元素之和为 total−nums[i]
 −sum。左右侧元素相等即为 sum=total−nums [i] − sum。

方法二:前缀和。

f(n)前缀和数组 f[i]表示[0, i - 1]区间,所有元素的和。f[i] = f[i - 1] + nums[i - 1]。

g(n) 后缀和数组 g[i]表示[i + 1, n - 1]区间,所有元素的和。 g[i] = g[i + 1] + nums[i + 1]。

在遍历数组,找到 i 值 f[i] == g[i]。

细节问题:f[0] = 0,g[n - 1] = 0。f从左向右遍历初始化,g从右向左遍历初始化。

class Solution {
public:int pivotIndex(vector<int>& nums) {/*int total = 0;for(auto e : nums){total += e;}int sum = 0;for(int i = 0; i < nums.size(); i++){ if(sum == total - sum - nums[i]){return i;}sum += nums[i];}return -1;*/int n = nums.size();vector<int> f(n),g(n);//f(n)为前缀和数组,g(n)为后缀和数组for(int i = 1; i < n; i++)//初始化前缀和数组f(n){f[i] = f[i - 1] + nums[i - 1];}for(int i = n - 2; i >= 0; i--)//初始化后缀和数组g(n){g[i] = g[i + 1] + nums[i + 1];}for(int i = 0; i < n; i++){if(f[i] == g[i])return i;}return -1;}
};

 4.除自身以外数组的乘积

238. 除自身以外数组的乘积 - 力扣(LeetCode)

前缀积:

预处理前缀积f   f[i]表示[0, i - 1]区间中所以元素的乘积,f[i] = f[i - 1] * nums[i - 1]。

预处理后缀积g  g[i]表示[i + 1,n - 1]区间中所以元素的乘积,g[i] = g[i + 1] * nums[i + 1]。

细节处理:f[0] = 1,g[n - 1] = 1。

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> f(n), g(n);f[0] = g[n - 1] = 1;for(int i = 1; i < n; i++)//初始化前缀积{f[i] = f[i - 1] * nums[i - 1];}for(int i = n - 2; i >= 0; i--)//初始化后缀积{g[i] = g[i + 1] * nums[i + 1];}vector<int> ret(n);for(int i = 0; i < n; i++){ret[i] = f[i] * g[i];}return ret;}
};

5.和为k的子数组

560. 和为 K 的子数组 - 力扣(LeetCode)

思路1:暴力枚举 时间复杂度O(N^2)。

这道题不能使用双指针来做优化,因为这个值有负数和零,保证不了区间内的单调性。

思路2:前缀和 + 哈希表

将问题转换成:以i位置为结尾的所有子数组,在[0, i - 1]区间内,有多少个前缀和等于sum[i] - k。

哈希表中存放的是前缀和 和 出现的次数。

细节问题:

1.前缀和加入哈希表的时机 -> 在计算 i 位置之前,哈希表里只保存[0, i - 1]位置的前缀和

2.不需要再创建一个前缀和数组,用一个sum来记录前一个位置的前缀和即可。

3.如果整个前缀和等于 k 让hash[0] = 1。

class Solution 
{
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> hash;hash[0] = 1;int sum = 0, ret = 0;for(auto e : nums){sum += e;if(hash.count(sum - k))ret += hash[sum - k];hash[sum]++;}return ret;}
};

6. 和可被k整除的子数组

974. 和可被 K 整除的子数组 - 力扣(LeetCode)

1.同余定理:(a - b)/ p = k ...... 0 --> a % p == b % p

2.c++和java中(负数%正数)的结果还为负数,修正:a % p + p(负数修正为正数但如果是正数就不正确了) -> (a % p + p) % p。

思路:在[0, i - 1]区间内,找到有多少个前缀和的余数等于(sum % k + k)% k。

哈希表中存的是前缀和的余数 和 出现的次数 。

class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {unordered_map<int, int> hash;hash[0 % k] = 1;//0这个数的余数int sum = 0, ret = 0;for(auto e : nums){sum += e;int r = (sum % k + k) % k;//余数if(hash.count(r))       ret += hash[r];hash[r]++;}return ret;}
};

7. 连续数组

525. 连续数组 - 力扣(LeetCode)

思路:将所有0修改成 -1 ,转换成在数组中,找出最长的子数组,使子数组中所有元素的和为0。

1.哈希表中存前缀和和下标。

2.什么时候存入哈希表,使用完当前元素后,存入哈希表

3.如果有重复的<sum, i>,只保留前面的那一对<sum, i>

4.前缀和默认为0的情况 ->hash[0] = -1

5.长度为i - j

下述具体思路为liuduo-yu - 力扣(LeetCode)LLL大佬所做非常详细所以我直接拷贝了过来。

* 解题思路:* 本题的意思是找到具有相同数量 0,1 的最长连续子数组,也就是子数组中要同时具有 0 和 1,并且 0 和 1 的数量是相同的, 并且是最长* 的子数组(好像是废话...)。* <p>* 给出一组测试用例:[0,0,0,1,1,1,0,0,1], 用指针 i 扫描一遍数组, 来观察每个位置上的可能情况* [0,0,0,1,1,1,0,0,1]* -i                 不符合条件, 0 1 数量不同* [0,0,0,1,1,1,0,0,1]* -  i               不符合条件, 0 1 数量不同* [0,0,0,1,1,1,0,0,1]* -    i             不符合条件, 0 1 数量不同* [0,0,0,1,1,1,0,0,1]* -      i           此时与前一个 0 构成 [0,1] 满足条件, 此时的子数组长度为 2* [0,0,0,1,1,1,0,0,1]* -        i         此时 [1,4] 区间满足条件, 子数组长度为 4* [0,0,0,1,1,1,0,0,1]* -          i       此时 [0,5] 区间满足条件, 子数组长度为 5* [0,0,0,1,1,1,0,0,1]* -            i     不符合条件* [0,0,0,1,1,1,0,0,1]* -              i   此时 [0,7] 区间满足条件, 子数组长度为 8* [0,0,0,1,1,1,0,0,1]* -                ^ 不符合条件* <p>* 当遍历完整个数组后, 我们可以知到 [0, 7] 区间是符合条件的最长连续子数组。肉眼很容易辨别哪个区间为最长连续子数组, 但是计算机如* 何能知道?答案是计算区间和, 如果让 0 变为 -1, 那么当区间内 -1 和 1 的数量相同时, 这区间和就是 0 。如此, 似乎可以使用前缀和* 来解决这个问题, 当计算的前缀和为 0 时, 就说明[0,i] 区间是满足题目要求的一个子数组。不过这样肯定会出现错误, 因为最终的结果不* 一定是从 0 下标开始子数组。例如这个用例 [0,0,1,0,0,0,1,1], 答案应该是 nums[2,7]区间长度为6的数组, 可以用上面的方式进行计算* 前缀和:* -[0,0,1,0,0,0,1,1]* - i               preSum = -1, (用 -1 替换 0);* -[0,0,1,0,0,0,1,1]* -   i             preSum = -2* -[0,0,1,0,0,0,1,1]* -     i           preSum = -1* -[0,0,1,0,0,0,1,1]* -       i         preSum = -2* -[0,0,1,0,0,0,1,1]* -         i       preSum = -3* -[0,0,1,0,0,0,1,1]* -           i     preSum = -4* -[0,0,1,0,0,0,1,1]* -             i   preSum = -3* -[0,0,1,0,0,0,1,1]* -               i preSum = -2* 观察可以发现, 当前缀和相同时, 前一个 i1 后面一个位置开始一直到 i2 的区间是满足题目要求的子数组, 即 nums[i1+1...i2] 满足题* 目要求, 并且 i2 - i1 = 子数组长度, 所以我们只需要计算出 nums[0...n-1] 每一个位置的前缀和, 一旦发现当前的计算出的前缀和在* 之前已经出现过, 就用当前的索引 i2 - 之前的索引 i1 即可求出本次得到的子数组长度,。因为需要求得的是最长连续子数组,所以应用一* 个变量 maxLength 来保存每一次计算出的子数组长度, 取较大值。也因为, 我们需要保存每一个位置的前缀和, 并且还需要通过前缀和找到* 相应位置的索引, 所以,使用 HashMap 来存放 {前缀和:索引}, 在上面例子中我们通过观察得到了 i2 - i1 = 数组长度, 但是有一个很隐* 蔽的缺陷, 即当整个数组即为答案时, i2 = nums.length - 1, i1 = 0 此时得到的数组长度为 nums.length - 1 这显然是错误的。因此* , 为了避免这个错误, 我们初始将 Map 中添加一对 {前缀和:索引}, 即 put(0,-1), 0代表前一个不存在的元素前缀和为 0, -1 代表不存* 在元素的索引。* 当定义了这些条件后, 我们开始用指针 i 遍历数组nums[0...nums.length - 1] 位置上的每一个元素。* 一、用变量 sum 来纪录[0...i]区间的和:* -   1.当 nums[i] == 0 时, sum += -1* -   2.当 nums[i] == 1 时, sum += 1* 二、接着判断 sum 是否已经存在于 HashMap 中:* -   1. 如果存在, 则取出 sum 所对应的索引 j, 那么 nums[j+1,i] 就是一个满足答案的子区间, 用* -      maxLength = Math.max(maxLengnth, i - j); 来纪录最长子数组。* -   2. 如果不存在, 则将 {sum:i} 存放在 HashMap 中作为纪录。* 当数组遍历完毕时, maxLength 中保存的即为答案数组的长度。* <p>*/
class Solution 
{
public:int findMaxLength(vector<int>& nums) {unordered_map<int,int> hash;//hash中存的前缀和和下标hash[0] = -1;//默认有一个前缀和为0的情况int sum = 0, maxsize = 0;for(int i = 0; i < nums.size(); i++){sum += nums[i] == 0 ? -1 : 1;if(hash.count(sum))//存在的话更新长度maxsize = max(maxsize, i - hash[sum]);elsehash[sum] = i;}return maxsize;}
};

8.矩形区域和

1314. 矩阵区域和 - 力扣(LeetCode)

开一个二维数组arr行列多加1一个,映射mat的二维前缀和。在处理ret的时候要注意下标映射的关系,如果越界了可以处理一个区取对应的最大值或最小值。

class Solution 
{
public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {int m = mat.size(),n = mat[0].size();vector<vector<int>> arr(m + 1,vector<int>(n + 1));//行列多开一个空间便于映射vector<vector<int>> ret(m,vector<int>(n));for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){arr[i][j] = arr[i - 1][j] + arr[i][j - 1] + mat[i - 1][j - 1] - arr[i - 1][j - 1];}}for(int i = 0; i < m; i++){   for(int j = 0; j < n; j++){int x1 = max(0, i - k) + 1;int x2 = min(m - 1, i + k) + 1;int y1 = max(0, j - k) + 1;int y2 = min(n - 1,j + k) + 1;ret[i][j] = arr[x2][y2] - arr[x2][y1 - 1] - arr[x1 - 1][y2] + arr[x1 - 1][y1 - 1];}}return ret;} 
};

相关文章:

算法:前缀和

1.【模版】前缀和 【模板】前缀和_牛客题霸_牛客网 这道题如果使用暴力解法时间复杂度为O(n*m)&#xff0c;会超时&#xff0c;所以要使用前缀和算法。 前缀和->快速求出数组中某一个连续区间的和。 第一步&#xff1a;预处理出一个前缀和数组 dp。 dp[i]表示[1, i] 区间…...

DEVICENET转MODBUS TCP网关与AB数据输出模块的高效融合方案研究

在工业自动化领域&#xff0c;多样化的设备通常采用不同的通信协议&#xff0c;这为系统集成带来了显著的挑战。特别是在需要将遵循DeviceNet协议的设备与基于MODBUS TCP协议的系统进行互连时&#xff0c;这一挑战尤为突出。AB数据输出作为一种功能卓越的DeviceNet分布式输入/输…...

牛客小白月赛113

前言&#xff1a;这场的E题补的我头皮都发麻了。 A. 2025 题目大意&#xff1a;一个仅有‘-’‘*’组成的字符串&#xff0c;初始有一个sum 1&#xff0c; 从左到右依次遍历字符串&#xff0c;遇到-就让sum--&#xff1b;遇到*就让sum* 2&#xff0c;问sum有没有可能大于等于…...

Mac版本Android Studio配置LeetCode插件

第一步&#xff1a;Android Studio里面找到Settings&#xff0c;找到Plugins&#xff0c;在Marketplace里面搜索LeetCode Editor。 第二步&#xff1a;安装对应插件&#xff0c;并在Tools->LeetCode Plugin页面输入帐号和密码。 理论上&#xff0c;应该就可以使用了。但是&a…...

电子电路基础1(杂乱)

电路基础知识 注意&#xff1a;电压源与电流源的表现形式 注意&#xff1a;在同一根导线上电势相等 电阻电路的等效变换 电子元器件基础 电阻...

rocketmq延迟消息的底层原理浅析

rocketmq延迟消息的底层原理 消息实体 延时消息是指允许消息在指定延迟时间后才被消费者消费 Apache RocketMQ 中&#xff0c;消息的核心实体类是 org.apache.rocketmq.common.message.Message public class Message implements Serializable {private String topic; …...

【openssl】升级为3.3.1,避免安全漏洞

本文档旨在形成 对Linux系统openssl版本进行升级 的搭建标准操作过程&#xff0c;搭建完成后&#xff0c;实现 openssl 达到3.3以上版本&#xff0c;避免安全漏洞 效果。 一、查看当前版本 版本不高于3.1的&#xff0c;均需要升级。 # 服务器上运行以下命令&#xff0c;查看…...

使用 HTML +JavaScript 从零构建视频帧提取器

在视频编辑、内容分析和多媒体处理领域&#xff0c;常常需要从视频中提取关键帧。手动截取不仅效率低下&#xff0c;还容易遗漏重要画面。本文介绍的视频帧提取工具通过 HTML5 技术栈实现了一个完整的浏览器端解决方案&#xff0c;用户可以轻松选择视频文件并进行手动或自动帧捕…...

基于若依前后分离版-用户密码错误锁定

sys_config配置参数 user.password.maxRetryCount&#xff1a;最大错误次数 user.password.lockTime&#xff1a;锁定时长 //SysLoginController//登录 PostMapping("/login") public AjaxResult login(RequestBody LoginBody loginBody) {AjaxResult ajax AjaxR…...

论文速读《DexWild:野外机器人策略的灵巧人机交互》

项目链接&#xff1a;https://dexwild.github.io/ 论文链接&#xff1a;https://arxiv.org/pdf/2505.07813 0. 简介 2025年5月&#xff0c;卡内基梅隆大学&#xff08;CMU&#xff09;发布了一篇突破性论文《DexWild: Dexterous Human Interactions for In-the-Wild Robot Pol…...

Bug问题

一、list 页面 import React, { useEffect, useState } from react; import { shallowEqual, useHistory, useSelector } from dva; import { Button, message } from choerodon-ui/pro; import formatterCollections from hzero-front/lib/utils/intl/formatterCollections; …...

【数据结构】5. 双向链表

文章目录 一、链表的分类1、双向链表的结构 二、双向链表的实现0、准备工作1、初始化2、打印3、尾插4、头插5、尾删6、头删7、查找8、在指定位置之后插入数据9、删除指定位置10、销毁 一、链表的分类 链表总共分为8种&#xff0c;具体的分组方式如图所示&#xff1a; 带头指的…...

【Linux手册】冯诺依曼体系结构

目录 前言 五大组件 数据信号 存储器&#xff08;内存&#xff09;有必要吗 常见面试题 前言 冯诺依曼体系结构是当代计算机基本架构&#xff0c;冯诺依曼体系有五大组件&#xff0c;通过这五大组件直观的描述了计算机的工作原理&#xff1b;学习冯诺依曼体系可以让给我们更…...

Mobile App UI自动化locator

在开展mobile app UI层自动化测试时&#xff0c;编写目标元素的locator是比较耗时的一个环节&#xff0c;弄清楚locator背后的逻辑&#xff0c;可以有效降低UI层测试维护成本。此篇博客以webdriverioappium作为UI自动化工具为例子&#xff0c;看看有哪些selector方法&#xff0…...

PaloAlto-Expedition OS命令注入漏洞复现(CVE-2025-0107)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前…...

(LeetCode 每日一题) 1061. 按字典序排列最小的等效字符串 (并查集)

题目&#xff1a;1061. 按字典序排列最小的等效字符串 思路&#xff1a;使用并查集&#xff0c;来将等价的字符连起来&#xff0c;形成一棵树。这棵树最小的字母&#xff0c;就代表整颗树&#xff0c;时间复杂度0(n)&#xff0c;细节看注释。 C版本&#xff1a; class Solutio…...

linux 安装mysql8.0;支持国产麒麟,统信uos系统

一&#xff1a;使用我已经改好的mysql linux mysql8.0解压可用&#xff0c;点我下载 也在国产麒麟系统&#xff0c;统信uos系统也测试过&#xff0c;可用&#xff1b; 下载后&#xff0c;上传mysql.tar.gz 然后使用root角色去执行几个命令即可&#xff1b;数据库密码&#xf…...

C#实现远程锁屏

前言 这是一次提前下班没有锁屏进而引发的一次思考后的产物&#xff0c;思考的主要场景是当人离开电脑后&#xff0c;怎么能控制电脑锁屏&#xff0c;避免屏幕上的聊天记录被曝光。 首先想到通过系统的电源计划设置闲置超时时间熄屏&#xff0c;这可能是最接近场景的解决方案&a…...

历史记录隐藏的安全风险

引言 在数字化生活与工作场景中&#xff0c;历史记录功能广泛存在于浏览器、办公软件、移动应用等各类平台。它通过记录用户的搜索内容、操作痕迹、访问路径等信息&#xff0c;为用户提供便捷的操作体验和个性化服务。然而&#xff0c;这种看似便利的功能背后&#xff0c;却隐藏…...

SpringBoot3整合MySQL8的注意事项

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 注意事项 1、请添加添加如下依赖&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><…...

网络安全大模型理解

一、网络安全大模型的概述 网络安全大模型是一种用于识别和应对各种网络安全威胁的模型。它通过分析网络数据包、网络行为等信息&#xff0c;识别潜在的网络安全事件&#xff0c;并采取相应的措施进行防御。网络安全大模型主要包括以下几个部分&#xff1a; 1. 数据预处理&am…...

智语心桥:当AI遇上“星星的孩子”,科技如何点亮沟通之路?

目录: 引言:当科技的温度,遇见“星星的孩子”“智语心桥”:一座为孤独症儿童搭建的AI沟通之桥核心技术探秘:AI如何赋能“读心”与“对话”?个性化魔法:AI如何实现“千人千面”的精准干预?应用场景畅想:从家庭到机构,AI的全方位支持为什么是“智语心桥”?——价值、可…...

itop-3568开发板机器视觉opencv开发手册-图像绘制-画线

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程 \04_OpenCV 开发配套资料\11”目录下&#xff0c;如下图所示&#xff1a; cv2.line 函数功能&#xff1a; 绘制一条直线。 函数原型&#xff1a; cv2.line(img,pt1,pt2,color,thicknessNone,lin…...

【高频面试题】快慢指针及相关应用

文章目录 1 简介2 相关应用3 相关题目4 典型例题4.1 判断链表是否有环4.2 寻找链表的入环点4.3 寻找链表的中点4.4 寻找链表的倒数第k个节点4.5 重排链表 &#xff08;反转链表找链表中点合并链表&#xff09;4.6 寻找重复数&#xff08;快慢指针 or 二分&#xff09;4.7 回文链…...

sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境

sudo docker exec -it backend bash&#x1f50d; 总体作用 这条命令的作用是&#xff1a; 以交互方式&#xff08;interactive&#xff09;进入名为 backend 的正在运行的 Docker 容器的命令行环境。 你会进入容器的“终端”&#xff0c;就像登录到一个 Linux 系统一样&#…...

[论文阅读] 人工智能 | 当AI遇见绿色软件工程:可持续AI实践的研究新方向

【论文解读】当AI遇见绿色软件工程&#xff1a;可持续AI实践的研究新方向 论文信息 作者&#xff1a;Maja H. Kirkeby, Enrique Barba Roque, Justus Bogner等 标题&#xff1a;Greening AI-enabled Systems with Software Engineering: A Research Agenda for Environment…...

[论文阅读] 人工智能 | 用大语言模型抓虫:如何让网络协议实现与RFC规范对齐

用大语言模型抓虫&#xff1a;如何让网络协议实现与RFC规范对齐&#xff1f; 论文信息 arXiv:2506.01249 SysLLMatic: Large Language Models are Software System Optimizers Huiyun Peng, Arjun Gupte, Ryan Hasler, Nicholas John Eliopoulos, Chien-Chou Ho, Rishi Mantr…...

浅析EXCEL自动连接PowerBI的模板

浅析EXCEL自动连接PowerBI的模板 之前我分享过&#xff1a;PowerBI链接EXCEL实现自动化报表 &#xff0c;其中一个关键工具就是提到的EXCEL链接模板&#xff0c;即宏工作薄。 今天就大概来聊一聊这个宏工作簿的底层原理是啥&#xff0c;怎么实现的。 第一步&#xff1a; 打开…...

DeepSeek 赋能金融反洗钱:AI 驱动的风险监测革新之路

目录 一、引言二、金融反洗钱监测的现状与挑战2.1 现状概述2.2 面临的挑战 三、DeepSeek 技术原理剖析3.1 核心架构3.2 关键技术 四、DeepSeek 在金融反洗钱监测中的应用优势4.1 强大的数据处理与分析能力4.2 精准的风险识别与预警4.3 提升工作效率与降低成本 五、DeepSeek 在金…...

java32

1.反射 获取类&#xff1a; 获取构造方法&#xff1a; 获取权限修饰符&#xff1a; 获取参数信息&#xff1a; 利用反射出来的构造器来创建对象&#xff1a; 获取成员变量&#xff1a; 获取成员方法&#xff1a; 综合练习&#xff1a; 动态代理&#xff1a;...