LeetCode——新手村

简介: LeetCode——新手村

前言

注册了一个LeetCode的新号,想写题目,发现了一个LeetCode新手村。之前的号都没有碰到过,这次既然碰到了,那么就开写吧!😎(虽然题目都很简单,但是有新手村奖励啊🤪)25479476cd0343858af8ed084899d55a.png

一、一维数组的动态和

1480. 一维数组的动态和 - 力扣(Leetcode)


1、题目

给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i])

请返回 nums 的动态和。

示例 1:

输入:nums = [1,2,3,4]

输出:[1,3,6,10]

解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。

示例 2:

输入:nums = [1,1,1,1,1]

输出:[1,2,3,4,5]

解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。

示例 3:

输入:nums = [3,1,2,10,1]

输出:[3,4,6,16,17]

2、代码

简单的前缀和计算

class Solution {
    public int[] runningSum(int[] nums) {
        int[] sum = new int[nums.length];
        sum[0] = nums[0];
        for (int i = 1; i < nums.length; i++) {
            sum[i] += nums[i] + sum[i - 1];
        }
        return sum;
    }
}

二、将数字变成 0 的操作次数

1342. 将数字变成 0 的操作次数 - 力扣(Leetcode)


1、题目

给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。

示例 1:

输入:num = 14

输出:6

解释:

步骤 1) 14 是偶数,除以 2 得到 7 。

步骤 2) 7 是奇数,减 1 得到 6 。

步骤 3) 6 是偶数,除以 2 得到 3 。

步骤 4) 3 是奇数,减 1 得到 2 。

步骤 5) 2 是偶数,除以 2 得到 1 。

步骤 6) 1 是奇数,减 1 得到 0 。


示例 2:

输入:num = 8

输出:4

解释:

步骤 1) 8 是偶数,除以 2 得到 4 。

步骤 2) 4 是偶数,除以 2 得到 2 。

步骤 3) 2 是偶数,除以 2 得到 1 。

步骤 4) 1 是奇数,减 1 得到 0 。

示例 3:

输入:num = 123

输出:12

2、代码

判断奇偶数

class Solution {
    public int numberOfSteps(int num) {
  int i=0;
        while (num!=0){
            if (num%2==0)
                num/=2;
            else
                num-=1;
            i++;
        }
        return i;
    }
}

三、最富有客户的资产总量

1672. 最富有客户的资产总量 - 力扣(Leetcode)


1、题目

给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量

客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。

示例 1:

输入:accounts = [[1,2,3],[3,2,1]]

输出:6

解释:

第 1 位客户的资产总量 = 1 + 2 + 3 = 6

第 2 位客户的资产总量 = 3 + 2 + 1 = 6

两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。

示例 2:

输入:accounts = [[1,5],[7,3],[3,5]]

输出:10

解释:

第 1 位客户的资产总量= 6

第 2 位客户的资产总量= 10

第 3 位客户的资产总量 = 8

第 2 位客户是最富有的,资产总量是 10

示例 3:

输入:accounts = [[2,8,7],[7,1,3],[1,9,5]]

输出:17

2、代码

数组求和

class Solution {
    public int maximumWealth(int[][] accounts) {
   int Max=0;
        for (int i=0;i<accounts.length;i++){
            int sum=0;
            for (int j=0;j<accounts[i].length;j++){
                sum+=accounts[i][j];
            }
            Max=Math.max(Max,sum);
        }
            return Max;
    }
}

四、Fizz Buzz

412. Fizz Buzz - 力扣(Leetcode)


1、题目

给你一个整数 n ,找出从 1n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:


answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。

answer[i] == "Fizz" 如果 i 是 3 的倍数。

answer[i] == "Buzz" 如果 i 是 5 的倍数。

  • answer[i] == i (以字符串形式)如果上述条件全不满足。

示例 1:

输入:n = 3

输出:["1","2","Fizz"]

示例 2:

输入:n = 5

输出:["1","2","Fizz","4","Buzz"]

示例 3:

输入:n = 15

输出:

["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

2、代码

List与字符串的简单使用

class Solution {
    public List<String> fizzBuzz(int n) {
        List<String> ans = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            String cur = "";
            if (i % 3 == 0) 
                cur += "Fizz";
            if (i % 5 == 0) 
                cur += "Buzz";
            if (cur.length() == 0) 
                cur = i + "";
            ans.add(cur);
        }
        return ans;
    }
}

五、链表的中间结点

876. 链表的中间结点 - 力扣(Leetcode)

1、题目

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:


f98adb0f57194ce9b9ba675a12cefde2.png

输入:head = [1,2,3,4,5]

输出:[3,4,5]

解释:链表只有一个中间结点,值为 3 。


示例 2:d3cb9044a0c742629a6e688e36ef1cb8.png


输入:head = [1,2,3,4,5,6]

输出:[4,5,6]

解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

2、代码

快慢指针,快指针每次走两步,慢指针每次走一步。


0761d810150148f0b9fd48925e9fb3cf.png


69ccbc5e9ee74cdd9cbc88b07e326581.png

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode middleNode(ListNode head) {
 ListNode fast=head;
        while (fast.next!=null&&fast.next.next!=null){
            head=head.next;
            fast=fast.next.next;
        }
        if (fast.next==null)
            return head;
        return head.next;
    }
}

六、赎金信

383. 赎金信 - 力扣(Leetcode)


1、题目

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false

magazine 中的每个字符只能在 ransomNote 中使用一次。

示例 1:

输入:ransomNote = "a", magazine = "b"

输出:false


示例 2:

输入:ransomNote = "aa", magazine = "ab"

输出:false


示例 3:

输入:ransomNote = "aa", magazine = "aab"

输出:true

2、代码

class Solution {
    public boolean canConstruct(String ransomNote, String magazine) {
         StringBuilder r=new StringBuilder(ransomNote);
        StringBuilder m=new StringBuilder(magazine);
        for (int i=0;i<r.length();i++){
            int index=m.indexOf(String.valueOf(r.charAt(i)));
            if (index==-1)
                return false;
            m=m.deleteCharAt(index);
        }
        return true;
    }
}



1953f2da6af548e38b2fccd317feb7e4.gif

目录
相关文章
|
6月前
【周赛总结】周赛354
【周赛总结】周赛354
47 0
|
6月前
13-周赛347总结
13-周赛347总结
54 0
|
6月前
14-周赛348总结
14-周赛348总结
52 0
|
6月前
9-周赛335总结
9-周赛335总结
50 0
|
6月前
|
存储
10-周赛336总结
10-周赛336总结
59 0
|
算法
LeetCode 周赛(2023/07/08)渐入佳境
- 往期回顾:[LeetCode 单周赛第 351 场 · 一场关于子数组的专题周赛](https://mp.weixin.qq.com/s/0KIaUMEpLZw6poHs3cc7MA)
119 0
|
6月前
|
算法 Windows
【周赛总结】周赛360
【周赛总结】周赛360
48 0
|
6月前
【周赛总结】18-周赛353
【周赛总结】18-周赛353
60 0
|
6月前
【周赛总结】周赛356
【周赛总结】周赛356
56 0
|
6月前
|
算法
8-周赛334总结
8-周赛334总结
48 0