1 solutions

  • 0
    @ 2024-6-27 20:58:11

    题解:双指针

    无论本题是以核心代码模式(大家平时做的LeetCode就是核心代码模式)考察还是ACM模式(需要自己写输入输出)考察,都不需要在链表里面进行操作,可以借助数组来进行操作

    这样会很大程度地简化代码逻辑。

    我们可以使用双指针来处理这道题,利用l,rl,r双指针来读取一段连续的相同元素的子数组。具体可以参考下面代码。

    C++

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010;
    int n,w[N];
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++)cin>>w[i];
        vector<int>res;  //用来存储合并后的链表的元素
        for(int l=1;l<=n;l++){
            int r=l,num=w[r];
            while(r+1<=n&&w[r+1]==w[r]){
                num+=w[r];
                r++;
            }
            res.push_back(num);
            l=r;
        }
        for(int &x:res){
            cout<<x<<" ";
        }
        return 0;
    }
    

    Java

    import java.util.*;
    
    public class Main {
        static final int N = 1010;
        static int n;
        static int[] w = new int[N];
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            n = scanner.nextInt();
            for (int i = 1; i <= n; i++) {
                w[i] = scanner.nextInt();
            }
            List<Integer> res = new ArrayList<>();  //用来存储合并后的链表的元素
            for (int l = 1; l <= n; l++) {
                int r = l, num = w[r];
                while (r + 1 <= n && w[r + 1] == w[r]) {
                    num += w[r];
                    r++;
                }
                res.add(num);
                l = r;
            }
            for (int x : res) {
                System.out.print(x + " ");
            }
        }
    }
    

    Python

    n=int(input())
    w=list(map(int,input().split()))
    l,r=0,0
    res=[]
    while l<n:
        r=l
        num=w[r]  #这一轮存入链表中的数字
        while r+1<n and w[r+1]==w[r]:
            num+=w[r]
            r+=1
        res.append(num)
        l=r+1
    for x in res:
        print(x,end=' ')
    
    • 1

    Information

    ID
    184
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    # Submissions
    148
    Accepted
    4
    Uploaded By