算法通关村番外篇-LeetCode编程从0到1系列一

这篇具有很好参考价值的文章主要介绍了算法通关村番外篇-LeetCode编程从0到1系列一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好我是苏麟 , 今天开始带来LeetCode编程从0到1系列 .

编程基础 0 到 1 , 50 题掌握基础编程能力

1768.交替合并字符串

描述 :

给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。

题目 :

  1. 交替合并字符串

LeetCode : 交替合并字符串

算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public String mergeAlternately(String word1, String word2) {
        int m = word1.length(), n = word2.length();
        int i = 0, j = 0;

        StringBuilder ans = new StringBuilder();
        while (i < m || j < n) {
            if (i < m) {
                ans.append(word1.charAt(i));
                ++i;
            }
            if (j < n) {
                ans.append(word2.charAt(j));
                ++j;
            }
        }
        return ans.toString();
    }
}

389. 找不同

描述 :

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

题目 :
LeetCode 389. 找不同 :
找不同
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言
分析 :
这道题用位运算还是比较好做的 .

代码 :

class Solution {
    public char findTheDifference(String s, String t) {
        int n = 0;
        int a = s.length();
        int b = t.length();
        for(int i = 0 ;i < a;i++){
            n ^= s.charAt(i);
        }
        for(int i = 0 ;i < b;i++){
            n ^= t.charAt(i);
        }
        return  (char) n;
    }
}

28. 找出字符串中第一个匹配项的下标

描述 ;
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

題目 :
LeetCode : 找出字符串中第一个匹配项的下标
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

偷懒的代码 :

class Solution {
    public int strStr(String haystack, String needle) {
        return haystack.indexOf(needle);
    }
}

暴力代码 :

class Solution {
    public int strStr(String haystack, String needle) {
        int n = haystack.length(), m = needle.length();
        for (int i = 0; i + m <= n; i++) {
            boolean flag = true;
            for (int j = 0; j < m; j++) {
                if (haystack.charAt(i + j) != needle.charAt(j)) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                return i;
            }
        }
        return -1;
    }
}

242. 有效的字母异位词

描述 :

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

题目 :

LeetCode 有效的字母异位词
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public boolean isAnagram(String s, String t) {
        char[] arr = s.toCharArray();
        char[] brr = t.toCharArray();
        Arrays.sort(arr);
        Arrays.sort(brr);
        return new String(arr).equals(new String(brr));
    }
}

459. 重复的子字符串

描述 :

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成

题目 :

LeetCode 重复的子字符串
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public boolean repeatedSubstringPattern(String s) {
        return (s + s).indexOf(s,1) != s.length();
    }
}

283. 移动零

描述 :

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

题目 :

LeetCode 移动零
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言
分析 :

这道题双指针就解决掉了 .

代码 :

class Solution {
    public void moveZeroes(int[] nums) {
        int n = nums.length;
        int left = 0;
        int right = 0;
        while(right < n){
            if(nums[right] != 0){
                swap(nums,left,right);
                left++;
            }
            right++;
        }

        Arrays.toString(nums);
    }
    public void swap(int[] arr,int a,int b){
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }
}

66. 加一

描述 :

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

题目 :
LeetCode 加一
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        for(int i = len - 1;i >= 0 ;i--){
            digits[i]++;
            digits[i] %= 10;
            if(digits[i] != 0){
                return digits;
            }
        }
        int[] arr = new int[len + 1];
        arr[0] = 1;
        return arr;
    }
}

1822. 数组元素积的符号

描述 :

已知函数 signFunc(x) 将会根据 x 的正负返回特定值:

如果 x 是正数,返回 1 。
如果 x 是负数,返回 -1 。
如果 x 是等于 0 ,返回 0 。
给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。

返回 signFunc(product) 。

题目 :

LeetCode 数组元素积的符号
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public int arraySign(int[] nums) {
        int count = 1;
        for(int i = 0;i < nums.length;i++){
            if(nums[i] == 0){
                return 0;
            }else if(nums[i] < 0){
                count = -count;
            }
        }
        return count;
    }
}

1502. 判断能否形成等差数列

描述 :

给你一个数字数组 arr 。

如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列

如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。

题目 :

LeetCode 判断能否形成等差数列

算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public boolean canMakeArithmeticProgression(int[] arr) {
        Arrays.sort(arr);
        int n = arr[1] -arr[0];
        for(int i = 0;i < arr.length - 1;i++){
            if(arr[i + 1] - arr[i] != n){
                return false;
            }    
        }  
        return true;
    }
}

896. 单调数列

描述 :

如果数组是单调递增或单调递减的,那么它是 单调 的。

如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。

当给定的数组 nums 是单调数组时返回 true,否则返回 false。

题目 :

LeetCode 单调数列

算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

代码 :

class Solution {
    public boolean isMonotonic(int[] nums) {
        int len = nums.length;
        return isAsc(nums,len) || isDesc(nums,len);
    }
    //升序
    public boolean isAsc(int[] nums,int len){
        for(int i = 0;i < len -1;i++){
            if(nums[i] > nums[i+1]){
                return false;
            }
        }
        return true;
    }
    //降序
    public boolean isDesc(int[] nums,int len){
        for(int i = 0;i < len -1;i++){
            if(nums[i] < nums[i+1]){
                return false;
            }
        }
        return true;
    }
}

13. 罗马数字转整数

描述 :
算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言

例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

题目 :

LeetCode 罗马数字转整数

算法通关村番外篇-LeetCode编程从0到1系列一,算法村,算法,leetcode,java,开发语言
代码 :

class Solution {
    public int romanToInt(String s) {
        List<Integer> list = new ArrayList<>();
        for(int i = 0;i < s.length();i++){
            char temp = s.charAt(i);
            switch(temp){
                case 'I':
                list.add(1);
                break;
                case 'V':
                list.add(5);
                break;
                case 'X':
                list.add(10);
                break;
                case 'L':
                list.add(50);
                break;
                case 'C':
                list.add(100);
                break;
                case 'D':
                list.add(500);
                break;
                case 'M':
                list.add(1000);
                break;
            }
        }
        int num = 0;
        for(int i = 0;i < list.size();i++){
            int a = list.get(i);
            if(i < list.size() - 1 && a < list.get(i + 1)){
                num -= a;
            }else{
                num += a;
            }
        }
        return num;
    }
}

这期就到这里 , 下期见!文章来源地址https://www.toymoban.com/news/detail-811221.html

到了这里,关于算法通关村番外篇-LeetCode编程从0到1系列一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Postman系列番外篇 - postman web版介绍及与PC版的对比

    近期postman官方推出了postman web版本,无需安装客户端即可使用 那么web端的postman可以替代pc版的postman吗? 打开postman的下载页面:https://www.postman.com/downloads/ 在下载按钮之下还有一个标题“Postman on the web”(使用web版postman) 点击下方按钮“Try the Web Version” 进入web版 postman 的主

    2024年02月02日
    浏览(53)
  • leetcode系列贪心算法汇总

    11 盛水最多的容器 题目:给一个一维数组,大概的意思就是下标代表水槽的宽度,数组的值代表这个位置水槽的高度,求盛水最多的容量。 解析:肯定得有个临时变量来存最大值,且不断进行比较来更新最大值,然后分别从两边开始使用双指针进行遍历,tmp := (right - left)

    2024年02月07日
    浏览(45)
  • Leetcode算法系列| 9. 回文数

    给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。 示例1: 示例 2: 示例3: 提示: 2^31 = x = 2^31 - 1 映入脑海的第一个想法是将数字转换为字符串,并

    2024年02月03日
    浏览(40)
  • 【ARM Cortex-M 系列 3 番外篇 -- ARMv6, ARMv7, ARMv8, ARMv9 架构差异及精简指令集 与 复杂指令集 介绍】

    上篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 异常处理及 hardfault 处理分析 ARM架构是一种处理器架构,全称为高级精简指令集计算机(Advanced RISC Machine)。它是英国ARM公司设计的一种精简指令集( RISC )处理器架构,和复杂指令集( CISC )处理器架构相对。 CISC 与 RISC 差异

    2024年02月08日
    浏览(47)
  • 【LeetCode算法系列题解】第61~65题

    【题目描述】 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 【示例1】 【示例2】 【提示】 链表中节点的数目在范围 [0, 500] 内 − 100 ≤ N o d e . v a l ≤ 100 -100le Node.valle 100 − 100 ≤ N o d e . v a l ≤ 100 0 ≤ k ≤ 2 ∗ 1 0 9 0le kle 2 * 10^9 0 ≤ k ≤

    2024年02月09日
    浏览(36)
  • 【LeetCode算法系列题解】第46~50题

    【题目描述】 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以按 任意顺序 返回答案。 【示例1】 【示例2】 【示例3】 【提示】 1 ≤ n u m s . l e n g t h ≤ 6 1le nums.lengthle 6 1 ≤ n u m s . l e n g t h ≤ 6 − 10 ≤ n u m s [ i ] ≤ 10 -10le nums[i]le 10 − 10 ≤ n u

    2024年02月10日
    浏览(36)
  • 【LeetCode算法系列题解】第36~40题

    【题目描述】 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次(请参考示例图)。 注意: 一个有效

    2024年02月10日
    浏览(50)
  • 【LeetCode算法系列题解】第26~30题

    【题目描述】 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以

    2024年02月10日
    浏览(41)
  • Leetcode算法系列| 12. 整数转罗马数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如

    2024年02月02日
    浏览(46)
  • 【算法|双指针系列No.2】leetcode1089. 复写零

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助 🍓希望我们一起努力、成长,共同进步。

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包