您现在的位置是:首页 >技术杂谈 >LeetCode——新手村网站首页技术杂谈

LeetCode——新手村

冷兮雪 2023-06-13 20:00:02
简介LeetCode——新手村

目录

 前言

 一、一维数组的动态和

 1、题目

 2、代码

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

 1、题目

 2、代码

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

 1、题目

 2、代码

四、Fizz Buzz

1、题目

 2、代码

五、链表的中间结点

1、题目

 2、代码

 六、赎金信

 1、题目

2、代码 


 前言

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

 一、一维数组的动态和

 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 ,找出从 1 到 n 各个整数的 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:

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例 2:

输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

 2、代码

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

/**
 * 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、题目

给你两个字符串:ransomNote 和 magazine ,判断 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、代码 

乒乓球筐__牛客网 (nowcoder.com)

牛客刷题_冷兮雪的博客-CSDN博客

与牛客网的乒乓球筐类似,就不讲了,直接看代码。

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;
    }
}

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。