力扣题目训练(9)

这篇具有很好参考价值的文章主要介绍了力扣题目训练(9)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2024年2月2日力扣题目训练

2024年2月2日第九天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的。

412. Fizz Buzz

链接: Fizz Buzz
难度: 简单
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++

思路:
这就是一个简单的遍历,只要按要求把特定位置进行修改即可。
代码:

class Solution {
public:
    vector<string> fizzBuzz(int n) {
        vector<string> ans;
        for(int i = 0 ; i < n; i++){
            if((i+1)%3 == 0 && (i+1)%5 == 0){
                ans.push_back("FizzBuzz");
            }else if((i+1)%3 == 0 && (i+1)%5 != 0){
                ans.push_back("Fizz");
            }else if((i+1)%3 != 0 && (i+1)%5 == 0){
                ans.push_back("Buzz");
            }else{
                ans.push_back(to_string(i+1));
            }
        }
        return ans;
    }
};

414. 第三大的数

链接: 第三大的数
难度: 简单
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++

思路:
求第三大就是排序然后返回位置第三的数字,不过需要删除重复元素,而且sort是从小到大排序的,这些细节都需要注意和解决。
代码:

class Solution {
public:
    int thirdMax(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        auto it = std::unique(nums.begin(), nums.end());  
        nums.erase(it, nums.end());       
        for(int i = 0; i < nums.size(); i++){
            cout<<nums[i]<<endl;
        }
        return nums.size() >= 3? nums[nums.size()-3]:nums[nums.size()-1];
    }
};

415. 字符串相加

链接: 字符串相加
难度: 简单
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++
思路:
遍历然后按照行列式的方法逐位计算。
代码:

class Solution {
public:
    string addStrings(string num1, string num2) {
        string ans="";
        int i = num1.size()-1;
        int j = num2.size()-1;
        int flag = 0;
        while(i >= 0 || j >= 0 || flag != 0){
            int x = i >= 0? (num1[i] - '0') : 0;
            int y = j >= 0? (num2[j] - '0') : 0;
            int temp =  x+ y + flag;
            if(temp >= 10){
                temp -= 10;
                flag = 1;
            }else{
                flag = 0;
            }
            ans += to_string(temp);
            i--;
            j--;
        }
        reverse(ans.begin(), ans.end());
        return ans;
    }
};

129. 求根节点到叶节点数字之和

链接: 数字之和
难度: 中等
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++

思路:
这道题求叶子节点数字之和利用深度优先遍历完成。
代码:

class Solution {
public:
    int dfs(TreeNode* root,int ans){
        if(root == NULL) return 0;
        ans = ans * 10 + (root->val);
        if(root->left == NULL && root->right == NULL ){
            return ans;
        }
        return dfs(root->left,ans) + dfs(root->right,ans);
    }
    int sumNumbers(TreeNode* root) {
        return dfs(root,0);
    }
};

131. 分割回文串

链接: 分割回文串
难度: 中等
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++

思路:
分割回文可以看出需要利用回溯,而判断是否为回文可以利用动态规划判断。
代码:

class Solution {
private:
    vector<vector<string>> ans;
    vector<string> res;
    int n;
public:
    void dfs(string s, int i, vector<vector<bool>> f){
        if(i == n){
            ans.push_back(res);
            return;
        }
        for(int j = i; j < n; j++){
            if(f[i][j]){
                res.push_back(s.substr(i,j-i+1));
                dfs(s,j+1,f);
                res.pop_back();
            }
        }
    }
    vector<vector<string>> partition(string s) {
        n = s.size();
        vector<vector<bool>> f(n,vector<bool>(n,true));
        for(int i = n -1; i >= 0; i--){
            for(int j = i + 1; j < n; j++){
                f[i][j] = (s[i] == s[j]) && f[i+1][j-1];
            }
        }
        dfs(s,0,f);
        return ans;
    }
};

65. 有效数字

链接: 有效数字
难度: 困难
题目:
力扣题目训练(9),编程学习,leetcode,算法,c++

运行示例:
力扣题目训练(9),编程学习,leetcode,算法,c++

思路:
这道题就是按照要求判断只需根据条件一步一步进行判断即可。
代码:文章来源地址https://www.toymoban.com/news/detail-826693.html

class Solution {
public:
    bool isNumber(string s) {
        bool isNum = false;
        bool isDecimal = false;
        bool isE = false;
        bool isSign = false;
        for(int i = 0; i < s.size(); i++){
            char  temp = s[i];
            if(0 <= temp-'0' && temp-'0'<= 9){
                isNum = true;
            }else if( temp == '.'){
                if(isDecimal || (!isNum && i == s.size() - 1) || isE)  return false;  
                isDecimal = true;
            }else if(temp == 'e' || temp == 'E'){
                if(isE || !isNum || i == s.size() - 1) return false;
                isE = true;
            }else if(temp == '-' || temp == '+'){
                if((i > 0 && s[i-1] != 'e' && s[i-1] != 'E') || i == s.size() - 1) return false;
                isSign = true;
            }else{
                return false;
            }
        }
        return true;
    }
};

到了这里,关于力扣题目训练(9)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【leetcode 力扣刷题】回文串相关题目(KMP、动态规划)

    题目链接:5. 最长回文子串 题目内容: 题目就是要我们找s中的回文子串,还要是最长的。其实想想,暴力求解也行……就是遍历所有的子串,同时判断是不是回文串,是的话再和记录的最大长度maxlen比较,如果更长就更新。时间复杂度直接变成O(n^3)。 优化的点在于,假设子

    2024年02月09日
    浏览(45)
  • 编程 100个训练题目

    编程题: 1.输入一串字符,分别统计元音字母和其他字母的个数,并显示统计结果,不区分字母大小写。 2.输入三角形三条边 a,b,c 的值,根据其数据,判断能否构成三角形。若能构成三角形,还要 显示三角形的性质:等边三角形、等腰三角形、直角三角形、任意三角形。 3.输入

    2024年02月12日
    浏览(43)
  • 算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)

    127. 单词接龙 - 力扣(LeetCode) 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord - s1 - s2 - … - sk: 每一对相邻的单词只差一个字母。 对于 1 = i = k 时,每个 si 都在 wordList 中。注意, beginWord 不需要在 wordList 中。 sk == endWord 给你两

    2024年04月09日
    浏览(76)
  • 算法学习——LeetCode力扣补充篇11(64. 最小路径和、48. 旋转图像 、169. 多数元素、394. 字符串解码、240. 搜索二维矩阵 II )

    64. 最小路径和 - 力扣(LeetCode) 描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 示例 1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→

    2024年04月23日
    浏览(37)
  • 力扣题目学习笔记(OC + Swift)24. 两两交换链表中的节点

    给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 首先定义递归终止条件: head.next不存,代表链表结束了 head.next.next不存在,表示不能两两配对 Swift OC 用到了解决链表问题的

    2024年02月04日
    浏览(41)
  • 力扣(LeetCode)算法_C++—— 快乐数

    编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是

    2024年02月09日
    浏览(39)
  • 算法修炼之路之双指针含多道leetcode 经典题目

    目录 前言  一:普通双指针 1.经典题目一  283移动0问题 分析 代码实现 2.经典题目二 1089复写0  分析 代码实现 二:解决成环类问题-快慢指针  经典例题一 202快乐数 分析  代码实现   三:左右相遇指针 经典例题一 11 盛最多水的容器 分析  代码实现    接下来的日子会顺

    2024年04月13日
    浏览(77)
  • 刷力扣 LeetCode 算法题需要充值会员吗?

    大家好,我是『负雪明烛』。 在过去的这些年里,我的一项业余爱好就是写作算法题解。如今写了上千篇题解了! 在 CSDN 上,我的博客获得了 200 多万的阅读。 在力扣中国题解区,我也获得了180 万的阅读。 当然,这些多归功于粉丝们的关注与支持!!谢谢各位!! 我一直

    2024年02月09日
    浏览(50)
  • LeetCode面试算法-力扣 88. 合并两个有序数组

    88. 合并两个有序数组 题目描述     给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意: 最终,合并后数组不应由函数返回,而是存储

    2024年02月10日
    浏览(46)
  • 力扣(LeetCode)算法_C++—— 存在重复元素

    给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 输入:nums = [1,2,3,1] 输出:true 示例 2: 输入:nums = [1,2,3,4] 输出:false 示例 3: 输入:nums = [1,1,1,3,3,4,3,2,4,2] 输出:true 提示: 1 = nums.length = 105 -1

    2024年02月09日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包