力扣126双周赛

k三题

求出加密整数的和

class Solution {
    public int sumOfEncryptedInt(int[] nums) {
   int ans = 0;
        for(int i =0;i

执行操作标记数组中的元素

class Solution {
    public long[] unmarkedSumArray(int[] nums, int[][] queries) {
   PriorityQueue pq = new PriorityQueue<>((a, b) -> {
            if (nums[a] != nums[b]) {
                return nums[a]-nums[b];
            }
            return a-b;

        });
         Set markedSet = new HashSet<>();

        for (int i = 0; i < nums.length; i++) {
            pq.offer(i);
        }


        long[] answer = new long[queries.length];
        long currentSum = 0;
        for (int num : nums) {
            currentSum=(long)((long)currentSum+(long)num);
        }

        for (int i = 0; i < queries.length; i++) {
            if (pq.isEmpty()) break;
            int index = queries[i][0];
            int ki = queries[i][1];

            // 如果该位置未被标记,则标记它
            if (!markedSet.contains(index)) {
                markedSet.add(index);
                currentSum= currentSum-(long)nums[index];
            }

            // 标记ki个最小的未标记元素
            while (ki > 0 && !pq.isEmpty()) {
                Integer top = pq.poll();
                if (!markedSet.contains(top)) {
                    markedSet.add(top);
                    currentSum -= nums[top];
                    ki--;
                }
            }

            answer[i] = currentSum;
        }

        return answer;
    }
}

 

替换字符串中的问号使分数最小

class Solution {
    public String minimizeStringValue(String s) {
     int[] countChar = new int[30];
        PriorityQueue pq = new PriorityQueue(
                (a, b) -> {
                    if (countChar[a] != countChar[b])
                        return countChar[a] - countChar[b];
                    return a - b;
                }
        );
        StringBuilder sb = new StringBuilder(s);
        char res[] = s.toCharArray();
        for (int i = 0; i < s.length(); i++) {
            if (res[i] != '?') {
                countChar[res[i] - 'a']++;
            }
        }

        List list = new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            pq.add(i);
        }
        for (int i = 0; i < s.length(); i++) {
            if (res[i] == '?') {
                Integer peek = pq.poll();
                char c = (char) (peek + 'a');
                list.add(c);
                countChar[peek]++;
                pq.add(peek);
            }
        }
            Collections.sort(list);
            int k = 0;
            for (int j = 0; j < s.length(); j++) {
                if (res[j] == '?') {
                    sb.setCharAt(j, list.get(k++));
                }
            }
        return String.valueOf(sb);
    }
}

你可能感兴趣的:(leetcode,算法,职场和发展)