从零开始的力扣刷题记录-第四十天

这篇具有很好参考价值的文章主要介绍了从零开始的力扣刷题记录-第四十天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

504. 七进制数-简单

题目描述:
给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

题解:
其实和二进制转换是一样的,除以7取余再倒序取出结果就可以了

代码(Go):

func convertToBase7(num int) string {
    if num == 0 {
        return "0"
    }
    flag := 0
    if num < 0 {
        num = -num
        flag = 1
    }
    s := []byte{}
    for num > 0 {
        s = append(s, '0'+byte(num%7))
        num /= 7
    }
    if flag == 1 {
        s = append(s, '-')
    }
    for i, n := 0, len(s); i < n/2; i++ {
        s[i], s[n-1-i] = s[n-1-i], s[i]
    }
    return string(s)
}

859. 亲密字符串-简单

题目描述:
给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。
交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。
例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。

题解:
两种情况,如果两字符串相等,那么需要字符串中有两个相同的字符,如果不相等,就一次遍历每一个字符进行比对,如果只有两个字符不相等,且位置相反则返回true否则返回false

代码(Go):

func buddyStrings(s string, goal string) bool {
    if len(s) != len(goal){
        return false
    }
    if s == goal{
        arr := [26]int{}
        for i := 0;i < len(s);i++{
            arr[int(s[i] - 'a')]++
            if arr[int(s[i] - 'a')] == 2{
                return true
            }
        }
        return false
    }
    p,q := 0,0
    flag := 0
    for i := 0;i < len(s);i++{
        if s[i] != goal[i]{
            flag++
            if flag == 1{
                p = i
            }else if flag == 2{
                q = i
            }else{
                return false
            }
        }
    }
    if s[p] == goal[q] && s[q] == goal[p]{
        return true
    }
    return false
}

914. 卡牌分组-简单

题目描述:
给定一副牌,每张牌上都写着一个整数。
此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:
每组都有 X 张牌。
组内所有的牌上都写着相同的整数。
仅当你可选的 X >= 2 时返回 true。

题解:
找到最少的数字出现次数,从大到小遍历它所有的因数,找到所有数字的最大公约数,若大于等于2则返回true,若找不到或小于2则返回false

代码(Go):

func hasGroupsSizeX(deck []int) bool {
    dict := map[int]int{}
    for _,v := range deck{
        if _,ok := dict[v];ok{
            dict[v]++
        }else{
            dict[v] = 1
        }
    }
    temp := 10001
    for _,v := range dict{
        if v < temp{
            temp = v
        }
    }
    num := temp
    i := 2
    for temp >= 2{
        flag := 0
        for _,v := range dict{
            if v%temp != 0{
                flag = 1
                break
            }
        }
        if flag == 0{
            return true
        }
        for num%i != 0{
            i++
        }
        temp = num/i
        i++
    }
    return false
}

102. 二叉树的层序遍历-中等

题目描述:
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

题解:
基础题,没啥说的

代码(Go):

func levelOrder(root *TreeNode) [][]int {
    q := []*TreeNode{}
    scei := [][]int{}
    if root == nil{
        return scei
    }else{
        q = append(q,root)
    }
    for len(q) > 0{
        qh := q
        sce := []int{}
        for len(qh) > 0{
            if q[0].Left != nil{
                q = append(q,q[0].Left)
            }
            if q[0].Right != nil{
                q = append(q,q[0].Right)
            }
            sce = append(sce,qh[0].Val)
            qh = qh[1:]
            q = q[1:]
        }
        scei = append(scei,sce)
    }
    return scei
}

总结

今天主要学了一下回溯,碰到一个回溯的中等题做了很久没做出来,所以就挑了几道简单点的题小摸一下鱼文章来源地址https://www.toymoban.com/news/detail-463177.html

到了这里,关于从零开始的力扣刷题记录-第四十天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 从零开始的力扣刷题记录-第八十七天

    题目描述: 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字: 例如,从根节点到叶节点的路径 1 - 2 - 3 表示数字 123 。 计算从根节点到叶节点生成的 所有数字之和 。 叶节点 是指没有子节点的节点

    2024年02月07日
    浏览(29)
  • 从零开始的力扣刷题记录-第五十八天

    题目描述: 给你一个 不包含 任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。 返回正整数 k ,如果不存在这样的整数,返回 -1 。 题解: 哈希表存储负数,再遍历nums对每一个正数去哈希表中查找是否存在对应的负数。存在就更新返回值 代码

    2024年02月09日
    浏览(35)
  • 从零开始的力扣刷题记录-第六十二天

    题目描述: 给你一个非负整数数组 nums 。在一步操作中,你必须: 选出一个正整数 x ,x 需要小于或等于 nums 中 最小 的 非零 元素。 nums 中的每个正整数都减去 x。 返回使 nums 中所有元素都等于 0 需要的 最少 操作数。 题解: 由于每次都要减去一个最小的非零元素,可以想

    2024年02月11日
    浏览(35)
  • 从零开始的力扣刷题记录-第七十二天

    题目描述: 给你一个整数数组 nums ,它包含 2 * n 个整数。 你需要将 nums 划分成 n 个数对,满足: 每个元素 只属于一个 数对。 同一数对中的元素 相等 。 如果可以将 nums 划分成 n 个数对,请你返回 true ,否则返回 false 题解: 哈希表统计各元素数量,如果有不能被2整除的就

    2024年02月11日
    浏览(32)
  • 从零开始的力扣刷题记录-第五十一天

    题目描述: 给你一棵二叉搜索树的 root ,请你 按中序遍历 将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。 题解: 中序遍历存储节点后按顺序连接即可 代码(Go): 题目描述: 小扣在秋日市集发

    2024年02月08日
    浏览(30)
  • 从零开始的力扣刷题记录-第六十四天

    题目描述: 给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤: 从 nums 选出 两个 相等的 整数 从 nums 中移除这两个整数,形成一个 数对 请你在 nums 上多次执行此操作直到无法继续执行。 返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答

    2024年02月11日
    浏览(29)
  • 从零开始的力扣刷题记录-第六十一天

    题目描述: 给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。 题解: 排序后从后往前遍历,取最大的三个边,如果满足两边之和大于第三边则返回,否则整体向前

    2024年02月09日
    浏览(34)
  • LeetCode 刷题记录——从零开始记录自己一些不会的

    1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环,太low了 用一个变量记录前一个位置 代码 2. 到达终点的数字 题意 思路 代码 3. 单词的压缩编码 题意 思路 代码 思路2 去找到是否不同的单词具有相同的后缀,我们可以将其反序之后插入字典树中。例如,我们有 “time”

    2024年02月09日
    浏览(45)
  • 力扣刷MySQL-第四弹(详细讲解)

     🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出现错误,希望大家能指正🙏 📜 感谢大家的关注! ❤️ 目录 🚀游戏玩

    2024年01月19日
    浏览(33)
  • 力扣刷题【第一期】

    1.爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 2.求两数的和(283) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下

    2024年02月07日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包