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

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

1790. 仅执行一次字符串交换能否使两个字符串相等-简单

题目描述:
给你长度相等的两个字符串 s1 和 s2 。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。
如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true ;否则,返回 false 。

题解:
前面做过一道和这个题一样的,区别就是那个题必须强制交换一次,所以相等的时候返回值不一样,其他一模一样

代码(Go):

func areAlmostEqual(s1 string, s2 string) bool {
    if s1 == s2{
        return true
    }
    if len(s1) != len(s2){
        return false
    }
    temp := 0
    p,q := 0,0
    for i := 0;i < len(s1);i++{
        if s1[i] != s2[i]{
            temp++
            if temp == 1{
                p = i
            }else{
                q = i
            }
        }
        if temp > 2{
            return false
        }
    }
    if temp == 2{
        if s1[p] == s2[q] && s1[q] == s2[p]{
            return true
        }
    }
    return false
}

1800. 最大升序子数组和-简单

题目描述:
给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。
子数组是数组中的一个连续数字序列。
已知子数组 [numsl, numsl+1, …, numsr-1, numsr] ,若对所有 i(l <= i < r),numsi < numsi+1 都成立,则称这一子数组为 升序 子数组。注意,大小为 1 的子数组也视作 升序 子数组。

题解:
遍历一次数组,遇到降序就从零开始计算temp,遇到升序就累加到temp中,最后比较temp与max的大小,把大数保存起来。看了官方题解才发现这是动态规划的思想

代码(Go):

func maxAscendingSum(nums []int) int {
    temp := nums[0]
    max := temp
    for i := 1;i < len(nums);i++{
        if nums[i] > nums[i - 1]{
            temp += nums[i]
        }else{
            temp = nums[i]
        }
        if temp > max{
            max = temp
        }
    }
    return max
}

1748. 唯一元素的和-简单

题目描述:
给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
请你返回 nums 中唯一元素的 和 。

题解:
哈希表记录出现次数,遍历哈希表将出现次数为1的数加起来。官方题解还可以再优化,遍历数组时第一次遇到一个数就加起来,如果后续再遇到这个数就减掉,这个方法只需要遍历一次数组不需要遍历哈希表

代码(Go):

func sumOfUnique(nums []int) int {
    dict := map[int]int{}
    for _,v := range nums{
        if _,ok := dict[v];ok{
            dict[v]++
        }else{
            dict[v] = 1
        }
    }
    sum := 0
    for i,v := range dict{
        if v == 1{
            sum += i
        }
    }
    return sum
}

1110. 删点成林-中等

题目描述:
给出二叉树的根节点 root,树上每个节点都有一个不同的值。
如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。
返回森林中的每棵树。你可以按任意顺序组织答案。

题解:
判断节点是否需要被删除如果需要被删除,则递归判断它的两个子节点,并且两个子节点可能加入节点序列,若不需要删除依旧递归遍历它的两个子节点,但是子节点不能加入节点序列

代码(Go):

func delNodes(root *TreeNode, to_delete []int) []*TreeNode {
    re := []*TreeNode{}
    var delNode func(root *TreeNode,to_delete []int,add int)
    delNode = func(root *TreeNode,to_delete []int,add int){
        if inDelete(root.Val,to_delete){
            if root.Left != nil{
                delNode(root.Left,to_delete,1)
            }
            if root.Right != nil{
                delNode(root.Right,to_delete,1)
            }
        }else{
            if root.Left != nil{
                delNode(root.Left,to_delete,0)
                if inDelete(root.Left.Val,to_delete){
                    root.Left = nil
                }
            }
            if root.Right != nil{
                delNode(root.Right,to_delete,0)
                if inDelete(root.Right.Val,to_delete){
                    root.Right = nil
                }
            }
            if add == 1{
                re = append(re,root)
            }
        }
    }
    delNode(root,to_delete,1)
    return re
}

func inDelete(i int,to_delete []int) bool {
    for _,v := range to_delete{
        if v == i{
            return true
        }
    }
    return false
}

总结

简单题提交数1000以上的题已经做遍了,接下来还有一些重复的题和提交数比较少的题,本来是想的开始一天两道中等题,但是最近比较忙,所以先继续一天3道,等忙完这阵就开始加到两道中等题文章来源地址https://www.toymoban.com/news/detail-464554.html

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

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

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

相关文章

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

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

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

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

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

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

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

    题目描述: 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按如下格式输

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

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

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

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

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

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

    2024年02月08日
    浏览(44)
  • 【从零开始学习JAVA | 第四十五篇】反射

    目录 前言: ​反射:  使用反射的步骤: 1.获取阶段: 2.使用阶段: 反射的应用场景: 使用反射的优缺点: 总结: Java中的反射是一项强大而灵活的功能,它允许程序在运行时 动态地获取、操作和利用类的信息 。通过反射,我们可以在运行时检查和修改类的属性、调用类

    2024年02月13日
    浏览(62)
  • 【从零开始学习JAVA | 第四十篇】了解线程池

    目录 前言: 线程池: 线程池的工作流程: 代码实现线程池: 任务拒绝策略:  线程池多大才算合适? 总结:         在Java编程中,线程池是一个强大的工具,它能够管理和复用线程,提供高效的并发处理能力。通过线程池,我们可以有效地控制并发线程的数量,并降

    2024年02月13日
    浏览(55)
  • 【从零开始学习JAVA | 第四十六篇】处理请求参数

            在我们之前的学习中,我们已经基本学习完了JAVA的基础内容,从今天开始我们就逐渐进入到JAVA的时间,在这一大篇章,我们将对前后端有一个基本的认识,并要学习如何成为一名合格的后端工程师。今天我们介绍的内容是:如何在后端处理前端的请求 目录 前言:

    2024年02月11日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包