Golang每日一练(leetDay0070) 移除链表元素、计数质数

news2024/11/20 8:36:36

目录

203. 移除链表元素  Remove Linked-list Elements  🌟

204. 计数质数 Count Primes  🌟🌟

🌟 每日一练刷题专栏 🌟

Rust每日一练 专栏

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


203. 移除链表元素  Remove Linked-list Elements

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

示例 2:

输入:head = [], val = 1
输出:[]

示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]
 

提示:

  • 列表中的节点数目在范围 [0, 104] 内
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

代码:

package main

import "fmt"

type ListNode struct {
	Val  int
	Next *ListNode
}

func removeElements(head *ListNode, val int) *ListNode {
	top := &ListNode{Val: 0}
	top.Next = head
	pre := top
	temp := head
	for temp != nil {
		if temp.Val == val {
			pre.Next = temp.Next
		} else {
			pre = temp
		}
		temp = temp.Next
	}
	return top.Next
}

func createLinkedList(nums []int) *ListNode {
	if len(nums) == 0 {
		return nil
	}
	head := &ListNode{Val: nums[0]}
	cur := head
	for i := 1; i < len(nums); i++ {
		cur.Next = &ListNode{Val: nums[i]}
		cur = cur.Next
	}
	return head
}

func printLinkedList(head *ListNode) {
	cur := head
	for cur != nil {
		fmt.Print(cur.Val, "->")
		cur = cur.Next
	}
	fmt.Println("nil")
}

func main() {
	nums := []int{1, 2, 6, 3, 4, 5, 6}
	head := createLinkedList(nums)
	printLinkedList(head)
	head = removeElements(head, 6)
	printLinkedList(head)
	
	nums2 := []int{}
	head = createLinkedList(nums2)
	printLinkedList(head)
	head = removeElements(head, 1)
	printLinkedList(head)
	
	nums3 := []int{7, 7, 7, 7}
	head = createLinkedList(nums3)
	printLinkedList(head)
	head = removeElements(head, 7)
	printLinkedList(head)
}

输出:

1->2->6->3->4->5->6->nil
1->2->3->4->5->nil
nil
nil
7->7->7->7->nil
nil

递归法:

package main

import "fmt"

type ListNode struct {
	Val  int
	Next *ListNode
}

func removeElements(head *ListNode, val int) *ListNode {
	if head == nil {
		return nil
	}
	head.Next = removeElements(head.Next, val)
	if head.Val == val {
		return head.Next
	}
	return head
}

func createLinkedList(nums []int) *ListNode {
	if len(nums) == 0 {
		return nil
	}
	head := &ListNode{Val: nums[0]}
	cur := head
	for i := 1; i < len(nums); i++ {
		cur.Next = &ListNode{Val: nums[i]}
		cur = cur.Next
	}
	return head
}

func printLinkedList(head *ListNode) {
	cur := head
	for cur != nil {
		fmt.Print(cur.Val, "->")
		cur = cur.Next
	}
	fmt.Println("nil")
}

func main() {
	nums := []int{1, 2, 6, 3, 4, 5, 6}
	head := createLinkedList(nums)
	printLinkedList(head)
	head = removeElements(head, 6)
	printLinkedList(head)
}

204. 计数质数 Count Primes

给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。

示例 1:

输入:n = 10
输出:4
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

示例 2:

输入:n = 0
输出:0

示例 3:

输入:n = 1
输出:0

提示:

  • 0 <= n <= 5 * 10^6

代码:

package main

import (
	"fmt"
	"math"
)

func countPrimes(n int) int {
	if n <= 2 {
		return 0
	}
	isPrime := make([]bool, n)
	for i := 0; i < n; i++ {
		isPrime[i] = true
	}
	isPrime[0] = false
	isPrime[1] = false
	for i := 2; i <= int(math.Sqrt(float64(n))); i++ {
		if isPrime[i] {
			for j := i * i; j < n; j += i {
				isPrime[j] = false
			}
		}
	}
	count := 0
	for i := 0; i < n; i++ {
		if isPrime[i] {
			count++
		}
	}
	return count
}

func main() {
	fmt.Println(countPrimes(10))
	fmt.Println(countPrimes(0))
	fmt.Println(countPrimes(1))
}

输出:

4
0
0


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Rust每日一练 专栏

(2023.5.16~)更新中...

Golang每日一练 专栏

(2023.3.11~)更新中...

Python每日一练 专栏

(2023.2.18~2023.5.18)暂停更

C/C++每日一练 专栏

(2023.2.18~2023.5.18)暂停更

Java每日一练 专栏

(2023.3.11~2023.5.18)暂停更

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-python3_8安装pyqt5

Python3.8安装PyQt5教程 介绍PyQt5 PyQt5是一个用于创建桌面应用程序的Python模块。它利用Qt框架的本地GUI应用程序开发工具包&#xff0c;为Python开发者提供了一种方便的方式来创建跨平台的应用程序。PyQt5支持在Windows&#xff0c;MacOS和Linux等主要桌面操作系统上构建G…

ChatGPT api 接口调用测试

参考文档&#xff1a; https://platform.openai.com/docs/quickstart/build-your-application示例说明&#xff1a; 本示例会生成一个简单的ChatGPT api接口调用server程序&#xff0c;该程序可以给用户输入的宠物类别为宠物取三个名字。打开网页后&#xff0c;会看到用户输入…

chatgpt赋能Python-python3_8_5怎么保存

Python 3.8.5&#xff1a;什么是它&#xff0c;为什么它重要&#xff0c;以及如何安装和保存&#xff1f; Python是当今世界上最受欢迎的编程语言之一。Python 3.8.5是该语言的最新版本&#xff0c;它引入了一些重要的改进和新特性。这篇文章将介绍Python 3.8.5并向您展示如何…

macOS Ventura 13.4 (22F66) Boot ISO 原版可引导镜像下载

本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 macOS Ventura 13.4 包括以下增强功…

[创业之路-68]:科创板上市公司符合哪些条件

上交所发布《关于在上交所设立科创板并试点注册制相关情况答记者问》。上交所将认真落实习指示&#xff0c;在证监会的指导下&#xff0c;积极研究制订科创板和注册制试点方案&#xff0c;向市场征求意见并履行报批程序后实施。科创板是独立于现有主板市场的新设板块&#xff0…

chatgpt赋能Python-python3_8_2怎么用

Python 3.8.2 指南&#xff1a;介绍、使用和结论 Python 3.8.2 是近期发布的一个重大更新&#xff0c;它提供了很多新的特性和改进&#xff0c;使得 Python 编程更加高效、方便和强大。本文将向您介绍 Python 3.8.2 的主要特性和使用方法&#xff0c;帮助您更好的利用 Python …

【前后端分离博客】学习笔记05 --- canal

一、概述 使用canal rabbitMQ 实现 MySQL 和 Elasticsearch 的数据同步 图解&#xff1a; 流程如下&#xff1a; 给mysql开启binlog功能 mysql完成增、删、改操作都会记录在binlog中 canal监听binlog变化并发送消息到MQ&#xff0c;项目接收消息并实时更新elasticsearch中…

IS215UCVEH2AE speed tronic涡轮控制PCB板

IS215UCVEH2AETPMC815-11IS215UCVEM08B IS215UCVEH2AE是通用电气公司Mark VI Speedtronic控制系统的一个组件。该板的功能相当于VME控制卡。VME卡架是Mark VI的标准架&#xff0c;有13或21槽架可供选择。 IS215UCVEH2AE是一个带有附加前面板的矩形板。面板顶部和底部有一个固…

震惊——某白帽破解zabbix系统,实现命令执行,最终获取shell

如果你坚持了自己的梦想&#xff0c;全世界都会为你让路。 一、漏洞说明 zabbix&#xff08;[zbiks]&#xff09;是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案&#xff08;百度百科定义&#xff09;。很多Zabbix的admin口令使用了初始账号&…

【学习日记2023.5.17】之 项目入门介绍_YApi_Swagger

文章目录 1. 项目入门1.1 软件开发整体介绍1.2 项目介绍1.3 开发环境搭建1.3.1 前端环境搭建1.3.2 后端环境搭建1.3.3 登录功能完善1.3.4 前后端分离开发流程 1.4 导入接口文档1.5 Swagger介绍使用方式Swagger常用注解 1.6 注意事项 1. 项目入门 1.1 软件开发整体介绍 软件开发…

PySide6/PyQT多线程之 高效管理多线程:暂停、恢复和停止的最佳实践

前言 关于 PySide6/PyQT 多线程&#xff0c;正确地处理多线程编程并确保线程之间的同步和通信并不容易。 本文以一个示例代码为基础&#xff0c;介绍 PySide6/PyQT多线程的运用&#xff0c;展示如何创建和管理线程&#xff0c;以及如何实现线程之间的同步和通信。 设想这么一个…

IP组播路由协议(组播内部网关协议)

IP组播路由协议:用来建立组播树&#xff0c;是实现组播传输的关键技术。分为源分发树和共享分发树。 PIM:协议无关组播 密集模式&#xff1a; PIM-DM:密集模式PIM DVMRP:距离矢量组播路由协议 MOSPF:组播开放式最短链路优先 稀疏模式 CBT:基于核心的树 PIM-SM:稀疏模式PIM 这…

微星UEFI签名密钥泄露引发“末日”供应链攻击恐慌

对硬件制造商微星Micro-Star International&#xff08;更广为人知的名称是 MSI&#xff09;的勒索软件入侵引发了人们对毁灭性供应链攻击的担忧&#xff0c;这些攻击可能会注入恶意更新&#xff0c;这些更新已使用受大量最终用户设备信任的公司签名密钥进行签名。 这有点像世…

chatgpt赋能Python-python3_7怎么更新

Python3.7如何更新&#xff1f; 对于拥有10年Python编程经验的工程师来说&#xff0c;更新Python版本是必不可少的。现在最新版本的Python是3.7&#xff0c;那么这个版本应该如何更新呢&#xff1f; 更新步骤 下载Python3.7安装包 在Python官网上下载即可。如果你使用的是L…

Cube Map 系列之:手把手教你 实现 立方体贴图

什么是Cube Map 在开始立方体贴图之前&#xff0c;我们先简单了解下cube map。 cube map 包含了六个纹理&#xff0c;分别表示了立方体的六个面&#xff1b; 相较二维的纹理使用坐标uv来获取纹理信息&#xff0c;这里我们需要使用三维的方向向量来获取纹理信息&#xff08;一…

力扣---LeetCode20. 有效的括号(栈)

文章目录 前言&#x1f31f;一、20. 有效的括号&#x1f31f;二、链接&#x1f31f;三、方法&#xff1a;栈实现&#x1f30f;3.1思路&#xff1a;&#x1f30f;3.2代码&#xff1a; &#x1f31f;四、补充&#xff1a;&#x1f63d;总结 前言 &#x1f467;个人主页&#xff1…

springboot+java高校教师学术成果管理系统-idea

功能介绍项目介绍Spring框架是Java平台的一个开放源代码的Full-stack(全栈)应用程序框架&#xff0c;和控制翻转容器的实现。Spring框架的一些核心功能理论&#xff0c;可以用于所有Java应用&#xff0c;Spring还为Java EE构建的Web应用提供大量的扩展支持。Spring框架没有实现…

python使用基础 pycharm代码的git同步

我们大家在编写代码的时候经常会遇到各种版本的控制问题。为此版本控制工具是每一个编写代码的同志均需要面临的问题。目前&#xff0c;业内已经有非常成熟的解决方案&#xff0c;比如我们常说的github、gitee等。由于国内网络原因&#xff0c;本文以gitee为例进行使用说明。 1…

基于SpringCloud的分布式网上商城的设计与实现

背景 经过网上调查和搜集数据,我们可以发现商城管理方面的系统并不是相当普及,在分布式架构商城管理方面的可以有许多改进。实际上如今信息化成为一个未来的趋势或者可以说在当前现代化的城市典范中,信息化已经成为主流,开发一个分布式架构网上商城系统一方面的可能会更合乎时…

chatgpt赋能Python-python3_7怎么安装pil

如何在Python3.7中安装PIL&#xff1f; Python3.7是一种流行的编程语言&#xff0c;广泛应用于机器学习、Web开发、数据科学等领域。PIL(Python Imaging Library)是一种Python图像处理库&#xff0c;它提供了丰富的图像处理功能&#xff0c;能够对图像进行缩放、旋转、裁剪等操…