有知道星星消除面试题吗

有个列表,里面有3,5,6,7,从第二个数开始消除,每消除一个数的得分为左右两数的乘积,最后消除到只剩两个数,乘积相加就是最后的分数
例如:2 3 4;消除3,计算24=8;最后得分8。
例如:2 3 4 5;消除3,计算2
4;消除4,计算35;最后得分23。
例如:3 4 5 6 7;消除4,计算3
5;消除5,计算46;消除6,计算57;最后得分74。
注意输入方式是;输一个数按一次回车,当输入*时,回车得出结果

我用java反正没做出来,网上也搜不到,不知道有人知道吗

类似这种消消乐的题目,可以去leetcode找找

没看懂题,到底是按顺序消除还是按输入消除,逻辑很简单,但是被输入要求整懵了


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        String s;
        while (true) {
            s = scanner.nextLine();
            if (s.equals("*")) {
                //星号结束
                break;
            }
            //list存数字
            list.add(Integer.parseInt(s));
        }
        int sum = 0;
        //从第2位开始,一直到倒数第2位
        for (int i = 1; i < list.size() - 1; i++) {
            sum += list.get(i - 1) * list.get(i + 1);
        }
        System.out.println(sum);
    }
}

用数组保存,判断数组大小,建立双指针,一个指向0,一个指向0+2,循环 j(i+2)<数组的大小,大小指针同时向右移动一个指针,将结果累加

img

不好意思,题有点不对,我再重新写一下
有一个星星队列,每一颗星星上面都有一个分数,我们每次可以挑选一个进行消灭,每次消灭的得分等于相邻两个星星的分数乘积,总分为每次消灭星星得分之和。举个例子,星星队列为{2,4,6, 2},那么消灭4,分数为26等于12,队列为{2, 6, 2}, 消灭6,分数为22等于4,总分为16。很显然,我们不能挑选队首跟队尾,一个长度为N的队列,经过N-2轮后游戏结束,求游戏结束时可获得的最大分数值。
4
5
6
9
2
*
=89,不好意思,记忘了,大家可以再试试