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

news/2024/11/16 21:42:54/

力扣每日四题

  • 653. 两数之和 IV - 输入二叉搜索树-简单
  • 671. 二叉树中第二小的节点-简单
  • 819. 最常见的单词-简单
  • 24. 两两交换链表中的节点-中等
  • 总结

653. 两数之和 IV - 输入二叉搜索树-简单

题目描述:
给定一个二叉搜索树 root 和一个目标结果 k,如果二叉搜索树中存在两个元素且它们的和等于给定的目标结果,则返回 true

题解:
中序遍历加双指针

代码(Go):

func findTarget(root *TreeNode, k int) bool {sce := []int{}var search func(root *TreeNode)search = func(root *TreeNode){if root == nil{return}search(root.Left)sce = append(sce,root.Val)search(root.Right)}search(root)p,q := 0,len(sce) - 1for p < q{if sce[p] + sce[q] == k{return true}else if sce[p] + sce[q] > k{q--}else if sce[p] + sce[q] <k{p++}}return false
}

671. 二叉树中第二小的节点-简单

题目描述:
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
更正式地说,即 root.val = min(root.left.val, root.right.val) 总成立。
给出这样的一个二叉树,你需要输出所有节点中的 第二小的值 。
如果第二小的值不存在的话,输出 -1 。

题解:
递归遍历树,如果节点值大于根节点值就可以存下来剪枝了,最后遍历所有存下来的节点,找到最小值。写完才发现不用全部存下来,直接用一个变量随时更新找到的最小值就可以了

代码(Go):

func findSecondMinimumValue(root *TreeNode) int {sce := []int{}k := root.Valvar search func(root *TreeNode,k int)search = func(root *TreeNode,k int){if root.Left != nil{if root.Left.Val > k{sce = append(sce,root.Left.Val)}else{search(root.Left,k)}}if root.Right != nil{if root.Right.Val > k{sce = append(sce,root.Right.Val)}else{search(root.Right,k)}}}search(root,k)if len(sce) == 0{return -1}temp := sce[0]for _,v := range sce{if v < temp{temp = v}}return temp
}

819. 最常见的单词-简单

题目描述:
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。
题目保证至少有一个词不在禁用列表中,而且答案唯一。
禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。

题解:
哈希表,遍历段落将单词加入哈希表统计数量,再遍历禁用词列表把哈希表中对应单词的数量改为0,最后遍历哈希表找出出现次数最多的单词

代码(Go):

func mostCommonWord(paragraph string, banned []string) string {low := strings.ToLower(paragraph)p,q := 0,0dict := map[string]int{}for q < len(low){for low[p] < 'a' || low[p] > 'z'{p++q++if p == len(low){break}}if p == len(low){break}if low[q] >= 'a' && low[q] <= 'z'{q++if q == len(low){temp := low[p:q]if _,ok := dict[temp];ok{dict[temp]++}else{dict[temp] = 1}break}}else{temp := low[p:q]if _,ok := dict[temp];ok{dict[temp]++}else{dict[temp] = 1}p = q}}for _,v := range banned{if _,ok := dict[v];ok{dict[v] = 0}}var temp stringnum := 0for i,v := range dict{if v > num{num = vtemp = i}}return temp
}

24. 两两交换链表中的节点-中等

题目描述:
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)

题解:
新建立一个不保存数值的头节点指向链表头节点,然后就是正常的for循环交换节点

代码(Go):

func swapPairs(head *ListNode) *ListNode {tempHead := &ListNode{0, head}temp := tempHeadfor temp.Next != nil && temp.Next.Next != nil {p := temp.Nextq := temp.Next.Nexttemp.Next = qp.Next = q.Nextq.Next = ptemp = p}return tempHead.Next
}

总结

又是被回溯折磨的一天,最后还是没做出来,找了一道简单点的题,感觉需要补补基础知识


http://www.ppmy.cn/news/102169.html

相关文章

工具-Ditto与X mouse Button,自定义热键复制粘贴Ctrl C /V,解放双手

文章目录 1、使用演示2、使用方法3、更新&#xff0c;鼠标一键实现复制粘贴3.1 使用方法 1、使用演示 不需要同时摁下ctrl c /v 就可以在键盘上实现一键复制粘贴&#xff0c;其实去网上有外接的键盘&#xff0c;大概20元左右&#xff0c;外接键盘只有两个摁键&#xff0c;就是…

realman——控制真实的机械臂

概述 MoveIt!完成运动规划后的输出接口是一个命名为“FollowJointTrajectory”的 action,其中包含了一系列规划好的路径点轨迹,与使用 MoveIt!控制 Gazebo中的机械臂不同的是,虚拟机械臂有 gazebo 的 ros_control 插件自动帮我们获取了follow_joint_trajectory 的动作 acti…

上饶广信区个体私营经济协会新班子力争打造全国样板

5月26日下午&#xff0c;江西省上饶市广信区个体私营经济协会第二届理事会暨会员代表大会在上饶京都国际大酒店隆重召开&#xff0c;来自协会的200多名理事会员单位及社会各界嘉宾、媒体代表共计300余人参加了此次大会。本次大会成功举行了换届大会&#xff0c;通过举手表决方式…

Spring:六、ProxyFactory使用

Spring&#xff1a;六、ProxyFactory使用 1 前言 Spring提供了编程式AOP代理方式&#xff0c;而不依赖于Spring Ioc&#xff0c;即ProxyFactory。使用此种方式可以很方便的使用JDK动态代理或CGLIB代理&#xff0c;且支持Advisor chain的使用&#xff0c;可以通过advisor链&am…

【华为OD统一考试B卷 | 100分】字符串分割(C++ Java JavaScript Python)

文章目录 题目描述输入描述输出描述ACM输入输出模式用例机考代码查重C++javapythonpython题目描述 给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。 对于新组成的每一个子串,如果它含…

差动测试棒如何连接到示波器

差动测试棒提供一个安全的绝缘仪器给示波器使用&#xff0c;它可以转换由高输入的差动电压进入一个低电压并且显示波形在示波器上&#xff0c;使用频率高达100MHz&#xff0c;非常适合大电力测试、研发使用。 差动测试棒输出标是设计在操作示波器1MΩ的输入阻抗的相对衰减量&a…

Axure教程—单色面积图(中继器)

本文将教大家如何用AXURE制作单色面积图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://icg26y.axshare.com/ 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87837919?spm1001.2014.3001.5503 二、功能介绍 简单填写中继器内容即…

人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用

如&#xff1a;天空 coco包含pascal voc 的所有类别&#xff0c;并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言&#xff0c;有些图片并没有标注信息&#xff0c;或者有错误标注信息。…