首页 > 其他分享 >LeetCode_单周赛_329

LeetCode_单周赛_329

时间:2023-01-22 18:33:20浏览次数:65  
标签:return int 单周赛 sign public score ans 329 LeetCode

2544. 交替数字和

在这里插入图片描述

代码1

转成字符串,逐个判断

class Solution {
    public int alternateDigitSum(int n) {
        char[] s = ("" + n).toCharArray();
        int t = 1;
        int ans = 0;
        for (int i = 0; i < s.length; i++) {
            ans += (s[i] - '0') * t;
            t = -t;
        }
        
        return ans;
    }
}

代码2

一次遍历,不使用额外空间
% 可以取出来末位的数字,进行逐个运算,但是题目要求是从高位开始算,我们就设最后一位是 + 号。

如果是奇数位,结果完全一样,循环结束后sign为 -1,乘 -sign = 1,依然是正确结果
如果是偶数位,符号相反了,最后一位是 - 号,ans+之后sign变成相反数+,我们把结果再乘 -sign 即可得到正确结果

class Solution {
    public int alternateDigitSum(int n) {
        int ans = 0, sign = 1;
        while (n > 0) {
            ans += (n % 10) * sign;
            n /= 10;
            sign = -sign;
        }

        return ans *= -sign;
    }
}

2545. 根据第 K 场考试的分数排序

在这里插入图片描述

代码1

题目花里胡哨的,其实就是一个二维数组排序,按照第 k 列从大到小排序
使用ArrayList,存储每一行,然后对List排序

class Solution {
    public int[][] sortTheStudents(int[][] score, int k) {
        ArrayList<int[]> a = new ArrayList<>();
        for (int i = 0; i < score.length; i++) a.add(score[i]);
        
        a.sort(new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return -(o1[k] - o2[k]);
            }
        });
        for (int i = 0; i < score.length; i++) score[i] = a.get(i);
        
        return score;
    }
}

代码2

lambda函数排序

class Solution {
    public int[][] sortTheStudents(int[][] score, int k) {
        Arrays.sort(score, (a, b) -> b[k] - a[k]);
        return score;
    }   
}

2546. 执行逐位运算使字符串相等

在这里插入图片描述

代码

看题意:
00 变成 00
10 变成 11
01 变成 11
11 变成 10

可以得到,要想有变化,一定要有 1,1可能会减少,但是一定不会减少到 0。
只要 s 中有 1,t 中一定有 1
或者两个都是由 0

class Solution {
    public boolean makeStringsEqual(String s, String target) {
        return s.contains("1") == target.contains("1");
    }
}

标签:return,int,单周赛,sign,public,score,ans,329,LeetCode
From: https://www.cnblogs.com/Changersh/p/17064563.html

相关文章

  • 【队列】LeetCode 281. 锯齿迭代器
    题目链接281.锯齿迭代器思路使用队列进行保存代码publicclassZigzagIterator{Queue<Iterator<Integer>>queue=newLinkedList<>();publicZigzagIt......
  • 【队列】LeetCode 346. 数据流中的移动平均值
    题目链接346.数据流中的移动平均值思路队列设计基础题代码classMovingAverage{privateIntegercurrentSum=0;privateQueue<Integer>queue=newLi......
  • [LeetCode] 684. Redundant Connection
    Inthisproblem,atreeisan undirectedgraph thatisconnectedandhasnocycles.Youaregivenagraphthatstartedasatreewith n nodeslabeledfrom......
  • leetcode笔记——328周赛
    1.二维前缀和,二维差分304.二维区域和检索-矩阵不可变-力扣(LeetCode)二维前缀和怎么处理,注意加减的下标 2.2537.统计好子数组的数目-力扣(LeetCode)首先看到子数......
  • 【双指针】LeetCode 409. 最长回文串
    题目链接409.最长回文串思路遍历字符串过程中统计字符出现个数,如果达到2则说明可以放到回文串的两端,需要result+=2。遍历完之后的回文串如果长度小于s,说明s中存......
  • LeetCode.541 反转字符串II
    1.题目给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小......
  • LeetCode.面试题02.05-链表求和-题解分析
    题目来源面试题02.05.链表求和题目详情给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并......
  • [LeetCode] 1824. Minimum Sideway Jumps
    Thereisa 3laneroad oflength n thatconsistsof n+1 points labeledfrom 0 to n.Afrog starts atpoint 0 inthe second lane andwantsto......
  • LeetCode.383 赎金信
    1.题目给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在rans......
  • 【LeetCode链表#12】链表相交
    链表相交同:160.链表相交力扣题目链接(opensnewwindow)给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回n......