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

目录
相关文章
|
2天前
|
存储
蓝桥备战:四元组问题(蓝桥OJ 3416)
蓝桥备战:四元组问题(蓝桥OJ 3416)
26 0
|
10月前
|
算法
LeetCode 周赛(2023/07/08)渐入佳境
- 往期回顾:[LeetCode 单周赛第 351 场 · 一场关于子数组的专题周赛](https://mp.weixin.qq.com/s/0KIaUMEpLZw6poHs3cc7MA)
93 0
|
12月前
牛客小白月赛13 C题
牛客小白月赛13 C题
55 0
|
12月前
牛客小白月赛13 D题
牛客小白月赛13 D题
40 0
|
12月前
牛客小白月赛13 F题
牛客小白月赛13 F题
54 0
|
12月前
牛客小白月赛13 E题
牛客小白月赛13 E题
50 0
|
12月前
|
机器学习/深度学习 人工智能 算法
|
12月前
|
索引
|
存储 机器学习/深度学习 人工智能
【蓝桥杯集训·周赛】AcWing 第94场周赛
文章目录 第一题 AcWing 4870. 装物品 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4871. 最早时刻 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4872. 最短路之和 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
47 0
|
JavaScript BI
【蓝桥杯集训·周赛】AcWing 第96场周赛
文章目录 第一题 AcWing 4876. 完美数 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第二题 AcWing 4877. 最大价值 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 第三题 AcWing 4878. 维护数组 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
66 0