leetcode 面试题57 - II. 和为s的连续正数序列【双指针】

本文介绍两种算法,用于找出所有可能的连续正整数序列,这些序列的和等于给定的目标值。第一种方法通过遍历从1到目标值一半的所有数字,检查后续连续数字的和是否等于目标值。第二种方法采用双指针技术,构建滑动窗口,避免重复遍历,更高效地找到符合条件的序列。

方法1:

暴力法,从1~target/2遍历,判断被遍历数字之后的连续n个数字之和是否等于target,若等于,则在List中加入该数字序列组成的数组,若sum>target后,跳出本次循环,开始从下一个数字开始遍历。

class Solution {
    public int[][] findContinuousSequence(int target) {
        List<int[]> ans = new ArrayList<>();
        for(int i=1; i<=target/2; i++){
            int temp = target;
            int k = i;
            while(temp>0){
                temp = temp - k;
                k++;
                if(temp == 0){
                    int[] a = new int[k-i];
                    int b = i;
                    for(int j=0; j<a.length; j++){
                        a[j] = b;
                        b++;
                    }
                    ans.add(a);
                }
            }            
        }    
        return ans.toArray(new int[ans.size()][0]);
    }
}

方法2:

为了避免重复的遍历,可以考虑使用双指针构建滑动窗口,起始窗口为1,2,当窗口内元素之和sum小于target时,右指针右移,sum=sum+right,sum大于target时,sum=sum-left,左指针右移,当sum==target时,将left和right之间的数放入数组并添加到list中,当右指针越过target/2时,结束运算。

class Solution {
    public int[][] findContinuousSequence(int target) {
        int left = 1;
        int right = 2;
        List<int[]> res = new ArrayList<>();
        int sum = left + right;
        while(right<=target/2+1){
            if(sum < target){
                right++;
                sum+=right;
            }else if(sum > target){
                sum-=left;
                left++;
            }else{
                int[] arr = new int[right-left+1];
                int temp = left;
                for(int i=0; i<arr.length; i++){
                    arr[i] = temp;
                    temp++;
                }
                res.add(arr);
                sum-=left;
                left++;
            }
        }
        return res.toArray(new int[0][]);
    }
}
数据集介绍:宫颈细胞异常检测目标检测数据集一、基础信息数据集名称:宫颈细胞异常检测目标检测数据集图片数量:- 训练集:2,639张医学显微图像- 验证集:706张医学显微图像分类类别:- Dyskeratotic(角化不良细胞):异常角化特征,常见于癌前病变- Koilocytotic(挖空细胞):典型HPV感染标志,提示潜在癌变风险- Metaplastic(化生细胞):正常修复过程中的细胞类型,需与恶性病变鉴别- Parabasal(旁基底细胞):反映上皮细胞成熟度的重要指标- Superficial_Intermediate(表层/中间层细胞):正常宫颈上皮脱落细胞标注格式:YOLO格式边界框标注,可直接用于目标检测模型训练数据特性:医学显微图像数据,包含细胞形态学特征细节,适用于病理分析场景二、适用场景宫颈癌筛查系统开发:训练AI模型自动识别涂片中的异常细胞类型,辅助病理科医生提升宫颈癌筛查效率细胞病理学教学系统:构建数字化教学工具,帮助医学生快速掌握不同宫颈细胞类型的形态学特征医学影像AI研究:支持计算机视觉与临床医学交叉研究,适用于细胞分类算法创新论文产出远程医疗诊断工具:集成至云端病理分析平台,为基层医疗机构提供智能细胞学诊断支持三、数据集优势临床相关性突出:覆盖WHO宫颈细胞学分类标准中的关键异常类型,直接对应临床诊断需求标注专业性强:细胞分类体系经临床病理专家验证,确保标注结果符合医学诊断标准形态特征完整性:包含正常细胞到异常病变的完整谱系,支持模型学习渐进式病理特征多任务适配性:除目标检测任务外,可通过标签扩展支持细胞分类计数等衍生应用场景数据分布合理性:训练集与验证集按3:1比例划分,确保模型训练的有效验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值