当前位置: 首页 > news >正文

Golang每日一练(leetDay0047)

目录

138. 复制带随机指针的链表 Copy List with Random-pointer  🌟🌟

139. 单词拆分  Word Break  🌟🌟

140. 单词拆分 II  Word Break II  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


138. 复制带随机指针的链表 Copy List with Random-pointer

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。

构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 

例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。

返回复制链表的头节点。

用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val,random_index] 表示:

  • val:一个表示 Node.val 的整数。
  • random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为  null 。

你的代码  接受原链表的头节点 head 作为传入参数。

示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

示例 2:

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

示例 3:

输入:head = [[3,null],[3,0],[3,null]]
输出:[[3,null],[3,0],[3,null]]

提示:

  • 0 <= n <= 1000
  • -10^4 <= Node.val <= 10^4
  • Node.random 为 null 或指向链表中的节点。

代码1: 直接在节点结构里增加Index属性

package mainimport "fmt"const null = -1 << 31type Node struct {Val    intNext   *NodeRandom *NodeIndex  int
}func createNode(val int) *Node {return &Node{Val:    val,Next:   nil,Random: nil,}
}func buildRandomList(nums [][]int) *Node {if len(nums) == 0 {return nil}nodes := make([]*Node, len(nums))for i := 0; i < len(nums); i++ {nodes[i] = &Node{Val: nums[i][0], Index: i}}for i := 0; i < len(nums); i++ {if nums[i][1] != null {nodes[i].Random = nodes[nums[i][1]]}if i < len(nums)-1 {nodes[i].Next = nodes[i+1]}}return nodes[0]
}func traverseList(head *Node) {if head == nil {return}visited := make(map[*Node]bool)cur := headfmt.Print("[")for cur != nil {fmt.Print("[")fmt.Printf("%d,", cur.Val)if cur.Random != nil {fmt.Printf("%d", cur.Random.Index)} else {fmt.Print("null")}fmt.Print("]")visited[cur] = trueif cur.Next != nil && !visited[cur.Next] {fmt.Print(",")cur = cur.Next} else {break}}fmt.Println("]")
}func copyRandomList(head *Node) *Node {if head == nil {return nil}cur := headfor cur != nil {copy := &Node{cur.Val, cur.Next, nil, cur.Index}cur.Next = copycur = copy.Next}cur = headfor cur != nil {if cur.Random != nil {cur.Next.Random = cur.Random.Next}cur = cur.Next.Next}newHead := head.Nextcur = headfor cur != nil {copy := cur.Nextcur.Next = copy.Nextif copy.Next != nil {copy.Next = copy.Next.Next}cur = cur.Next}return newHead
}func copyRandomList2(head *Node) *Node {if head == nil {return nil}m := make(map[*Node]*Node)cur := headfor cur != nil {m[cur] = &Node{cur.Val, nil, nil, cur.Index}cur = cur.Next}cur = headfor cur != nil {m[cur].Next = m[cur.Next]m[cur].Random = m[cur.Random]cur = cur.Next}return m[head]
}func main() {nodes := [][]int{{7, null}, {13, 0}, {11, 4}, {10, 2}, {1, 0}}head := buildRandomList(nodes)traverseList(head)head = copyRandomList(head)traverseList(head)nodes = [][]int{{1, 1}, {2, 1}}head = buildRandomList(nodes)traverseList(head)head = copyRandomList(head)traverseList(head)nodes = [][]int{{3, null}, {3, 0}, {3, null}}head = buildRandomList(nodes)traverseList(head)head = copyRandomList(head)traverseList(head)
}

代码2: 增加getIndex()函数获取Index索引号

func getIndex(node *Node, head *Node) int
package mainimport ("fmt""strings"
)const null = -1 << 31type Node struct {Val    intNext   *NodeRandom *Node
}func createNode(val int) *Node {return &Node{Val:    val,Next:   nil,Random: nil,}
}func buildRandomList(nums [][]int) *Node {if len(nums) == 0 {return nil}nodes := make([]*Node, len(nums))for i := 0; i < len(nums); i++ {nodes[i] = &Node{Val: nums[i][0]}}for i := 0; i < len(nums); i++ {if nums[i][1] != null {nodes[i].Random = nodes[nums[i][1]]}if i < len(nums)-1 {nodes[i].Next = nodes[i+1]}}return nodes[0]
}func traverseList(head *Node) [][]int {if head == nil {return nil}visited := make(map[*Node]bool)cur := headres := make([][]int, 0)for cur != nil {visited[cur] = truerandomIndex := nullif cur.Random != nil {randomIndex = getIndex(cur.Random, head)}res = append(res, []int{cur.Val, randomIndex})if cur.Next != nil && !visited[cur.Next] {cur = cur.Next} else {break}}return res
}func getIndex(node *Node, head *Node) int {index := 0cur := headfor cur != node {index++cur = cur.Next}return index
}func copyRandomList(head *Node) *Node {if head == nil {return nil}cur := headfor cur != nil {copy := &Node{cur.Val, cur.Next, nil}cur.Next = copycur = copy.Next}cur = headfor cur != nil {if cur.Random != nil {cur.Next.Random = cur.Random.Next}cur = cur.Next.Next}newHead := head.Nextcur = headfor cur != nil {copy := cur.Nextcur.Next = copy.Nextif copy.Next != nil {copy.Next = copy.Next.Next}cur = cur.Next}return newHead
}func copyRandomList2(head *Node) *Node {if head == nil {return nil}m := make(map[*Node]*Node)cur := headfor cur != nil {m[cur] = &Node{cur.Val, nil, nil}cur = cur.Next}cur = headfor cur != nil {m[cur].Next = m[cur.Next]m[cur].Random = m[cur.Random]cur = cur.Next}return m[head]
}func Array2DToString(array [][]int) string {if len(array) == 0 {return "[]"}arr2str := func(arr []int) string {res := "["for i := 0; i < len(arr); i++ {if arr[i] == null {res += "null"} else {res += fmt.Sprint(arr[i])}if i != len(arr)-1 {res += ","}}return res + "]"}res := make([]string, len(array))for i, arr := range array {res[i] = arr2str(arr)}return strings.Join(strings.Fields(fmt.Sprint(res)), ",")
}func main() {nodes := [][]int{{7, null}, {13, 0}, {11, 4}, {10, 2}, {1, 0}}head := buildRandomList(nodes)fmt.Println(Array2DToString(traverseList(head)))head = copyRandomList(head)fmt.Println(Array2DToString(traverseList(head)))nodes = [][]int{{1, 1}, {2, 1}}head = buildRandomList(nodes)fmt.Println(Array2DToString(traverseList(head)))head = copyRandomList(head)fmt.Println(Array2DToString(traverseList(head)))nodes = [][]int{{3, null}, {3, 0}, {3, null}}head = buildRandomList(nodes)fmt.Println(Array2DToString(traverseList(head)))head = copyRandomList(head)fmt.Println(Array2DToString(traverseList(head)))
}

输出:

[[7,null],[13,0],[11,4],[10,2],[1,0]]
[[7,null],[13,0],[11,4],[10,2],[1,0]]
[[1,1],[2,1]]
[[1,1],[2,1]]
[[3,null],[3,0],[3,null]]
[[3,null],[3,0],[3,null]]


139. 单词拆分  Word Break

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。

注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

示例 1:

输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。

示例 2:

输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。注意,你可以重复使用字典中的单词。

示例 3:

输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false

提示:

  • 1 <= s.length <= 300
  • 1 <= wordDict.length <= 1000
  • 1 <= wordDict[i].length <= 20
  • s 和 wordDict[i] 仅有小写英文字母组成
  • wordDict 中的所有字符串 互不相同

代码1: 暴力枚举

package mainimport ("fmt"
)func wordBreak(s string, wordDict []string) bool {return helper(s, wordDict)
}func helper(s string, wordDict []string) bool {if s == "" {return true}for i := 1; i <= len(s); i++ {if contains(wordDict, s[:i]) && helper(s[i:], wordDict) {return true}}return false
}func contains(wordDict []string, s string) bool {for _, word := range wordDict {if word == s {return true}}return false
}func main() {s := "leetcode"wordDict := []string{"leet", "code"}fmt.Println(wordBreak(s, wordDict))s = "applepenapple"wordDict = []string{"apple", "pen"}fmt.Println(wordBreak(s, wordDict))s = "catsandog"wordDict = []string{"cats", "dog", "sand", "and", "cat"}fmt.Println(wordBreak(s, wordDict))
}

代码2: 记忆化搜索

package mainimport ("fmt"
)func wordBreak(s string, wordDict []string) bool {memo := make([]int, len(s))for i := range memo {memo[i] = -1}return helper(s, wordDict, memo)
}func helper(s string, wordDict []string, memo []int) bool {if s == "" {return true}if memo[len(s)-1] != -1 {return memo[len(s)-1] == 1}for i := 1; i <= len(s); i++ {if contains(wordDict, s[:i]) && helper(s[i:], wordDict, memo) {memo[len(s)-1] = 1return true}}memo[len(s)-1] = 0return false
}func contains(wordDict []string, s string) bool {for _, word := range wordDict {if word == s {return true}}return false
}func main() {s := "leetcode"wordDict := []string{"leet", "code"}fmt.Println(wordBreak(s, wordDict))s = "applepenapple"wordDict = []string{"apple", "pen"}fmt.Println(wordBreak(s, wordDict))s = "catsandog"wordDict = []string{"cats", "dog", "sand", "and", "cat"}fmt.Println(wordBreak(s, wordDict))
}

代码3: 动态规划

package mainimport ("fmt"
)func wordBreak(s string, wordDict []string) bool {n := len(s)dp := make([]bool, n+1)dp[0] = truefor i := 1; i <= n; i++ {for j := 0; j < i; j++ {if dp[j] && contains(wordDict, s[j:i]) {dp[i] = truebreak}}}return dp[n]
}func contains(wordDict []string, s string) bool {for _, word := range wordDict {if word == s {return true}}return false
}func main() {s := "leetcode"wordDict := []string{"leet", "code"}fmt.Println(wordBreak(s, wordDict))s = "applepenapple"wordDict = []string{"apple", "pen"}fmt.Println(wordBreak(s, wordDict))s = "catsandog"wordDict = []string{"cats", "dog", "sand", "and", "cat"}fmt.Println(wordBreak(s, wordDict))
}

输出:

true
true
false


140. 单词拆分 II  Word Break II

给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回所有这些可能的句子。

注意:词典中的同一个单词可能在分段中被重复使用多次。

示例 1:

输入:s = "catsanddog", wordDict = ["cat","cats","and","sand","dog"]
输出:["cats and dog","cat sand dog"]

示例 2:

输入:s = "pineapplepenapple", wordDict = ["apple","pen","applepen","pine","pineapple"]
输出:["pine apple pen apple","pineapple pen apple","pine applepen apple"]
解释: 注意你可以重复使用字典中的单词。

示例 3:

输入:s = "catsandog", wordDict = ["cats","dog","sand","and","cat"]
输出:[]

提示:

  • 1 <= s.length <= 20
  • 1 <= wordDict.length <= 1000
  • 1 <= wordDict[i].length <= 10
  • s 和 wordDict[i] 仅有小写英文字母组成
  • wordDict 中所有字符串都 不同

代码1: 回溯法

package mainimport ("fmt""strings"
)func wordBreak(s string, wordDict []string) []string {// 构建字典dict := make(map[string]bool)for _, word := range wordDict {dict[word] = true}// 回溯函数var res []stringvar backtrack func(start int, path []string)backtrack = func(start int, path []string) {if start == len(s) {res = append(res, strings.Join(path, " "))return}for i := start + 1; i <= len(s); i++ {if dict[s[start:i]] {path = append(path, s[start:i])backtrack(i, path)path = path[:len(path)-1]}}}backtrack(0, []string{})return res
}func ArrayToString(arr []string) string {res := "[\""for i := 0; i < len(arr); i++ {res += arr[i]if i != len(arr)-1 {res += "\",\""}}res += "\"]"if res == "[\"\"]" {res = "[]"}return res
}func main() {s := "catsanddog"wordDict := []string{"cat", "cats", "and", "sand", "dog"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))s = "pineapplepenapple"wordDict = []string{"apple", "pen", "applepen", "pine", "pineapple"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))s = "catsandog"wordDict = []string{"cats", "dog", "sand", "and", "cat"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))
}

代码2: 动态规划 + 回溯法

package mainimport ("fmt""strings"
)func wordBreak(s string, wordDict []string) []string {// 构建字典dict := make(map[string]bool)for _, word := range wordDict {dict[word] = true}// 动态规划n := len(s)dp := make([]bool, n+1)dp[0] = truefor i := 1; i <= n; i++ {for j := 0; j < i; j++ {if dp[j] && dict[s[j:i]] {dp[i] = truebreak}}}if !dp[n] {return []string{}}// 回溯函数var res []stringvar backtrack func(start int, path []string)backtrack = func(start int, path []string) {if start == len(s) {res = append(res, strings.Join(path, " "))return}for i := start + 1; i <= len(s); i++ {if dict[s[start:i]] {path = append(path, s[start:i])backtrack(i, path)path = path[:len(path)-1]}}}backtrack(0, []string{})return res
}func ArrayToString(arr []string) string {res := "[\""for i := 0; i < len(arr); i++ {res += arr[i]if i != len(arr)-1 {res += "\",\""}}res += "\"]"if res == "[\"\"]" {res = "[]"}return res
}func main() {s := "catsanddog"wordDict := []string{"cat", "cats", "and", "sand", "dog"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))s = "pineapplepenapple"wordDict = []string{"apple", "pen", "applepen", "pine", "pineapple"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))s = "catsandog"wordDict = []string{"cats", "dog", "sand", "and", "cat"}fmt.Println(ArrayToString(wordBreak(s, wordDict)))
}

 代码3: 动态规划 + 记忆化搜索

func wordBreak(s string, wordDict []string) []string {// 构建字典dict := make(map[string]bool)for _, word := range wordDict {dict[word] = true}// 动态规划n := len(s)dp := make([]bool, n+1)dp[0] = truefor i := 1; i <= n; i++ {for j := 0; j < i; j++ {if dp[j] && dict[s[j:i]] {dp[i] = truebreak}}}if !dp[n] {return []string{}}// 记忆化搜索memo := make(map[int][][]string)var dfs func(start int) [][]stringdfs = func(start int) [][]string {if _, ok := memo[start]; ok {return memo[start]}var res [][]stringif start == len(s) {res = append(res, []string{})return res}for i := start + 1; i <= len(s); i++ {if dict[s[start:i]] {subRes := dfs(i)for _, subPath := range subRes {newPath := append([]string{s[start:i]}, subPath...)res = append(res, newPath)}}}memo[start] = resreturn res}return format(dfs(0))
}
// 格式化结果集
func format(paths [][]string) []string {var res []stringfor _, path := range paths {res = append(res, strings.Join(path, " "))}return res
}

输出:

["cat sand dog","cats and dog"]
["pine apple pen apple","pine applepen apple","pineapple pen apple"]
[]


🌟 每日一练刷题专栏 🌟

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

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

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

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

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

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关文章:

Golang每日一练(leetDay0047)

目录 138. 复制带随机指针的链表 Copy List with Random-pointer &#x1f31f;&#x1f31f; 139. 单词拆分 Word Break &#x1f31f;&#x1f31f; 140. 单词拆分 II Word Break II &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &…...

HCL Nomad Web 1.0.7发布和新功能验证

大家好&#xff0c;才是真的好。 要问在HCL Notes/Domino系列产品中&#xff0c;谁更新得最快&#xff0c;那么答案一定是HCL Nomad Web。 你看上图右边&#xff0c;从1.0.1更新到1.0.7&#xff0c;都没花多少时间。 从HCL Nomad Web 1.0.5版本开始&#xff0c;可以支持直接…...

春招网申简历填写三技巧

网申第一关很重要&#xff0c;不夸张的说网申决定了你的笔试机会&#xff0c;从如信银行考试中心了解到&#xff0c;银行网申筛选过程中&#xff0c;有机器筛选人工筛选两道程序&#xff0c;掌握填写技巧后对提升简历通过率有较大帮助&#xff0c;一定要把握住&#xff0c;关于…...

计算机网络基础知识总结

经过学习我们可以知道: 关于计算机网络: ip地址端口号协议协议分层TCP五层协议协议封装两台计算机之间的通信 目录 ip地址 端口号 协议 协议分层 五层协议体系结构 (1) 应用层 (2) 运输层 (3) 网络层 (4)数据链路层 (5)物理层 封装&分用 两台主机之间的通信 …...

(下)苹果有开源,但又怎样呢?

一开始&#xff0c;因为 MacOS X &#xff0c;苹果与 FreeBSD 过往从密&#xff0c;不仅挖来 FreeBSD 创始人 Jordan Hubbard&#xff0c;更是在此基础上开源了 Darwin。但是&#xff0c;苹果并没有给予 Darwin 太多关注&#xff0c;作为苹果的首个开源项目&#xff0c;它算不上…...

row_number 和 cte 使用实例:考场监考安排

row_number 和 cte 使用实例&#xff1a;考场监考安排 考场监考安排使用 cte 模拟两个表的原始数据使用 master..spt_values 进行数据填充优先安排时长较长的考试使用 cte 安排第一个需要安排的科目统计老师已有的监考时长尝试使用 cte 递归&#xff0c;进行下一场考试安排&…...

2023天梯赛记录

文章目录 L2-001 紧急救援L2-002 链表去重L2-004 这是二叉搜索树吗&#xff1f;L2-005 集合相似度L2-006 树的遍历L2-007 家庭房产L2-010 排座位L2-011 玩转二叉树L2-012 关于堆的判断L2-013 红色警报L2-014 列车调度L2-016 愿天下有情人都是失散多年的兄妹L2-019 悄悄关注L2-0…...

被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了

大家好&#xff0c;我是小富&#xff5e; 前言 忙里偷闲学习了点技术写了点demo代码&#xff0c;打算提交到我那 2000Star 的Github仓库上&#xff0c;居然发现有5个Issues&#xff0c;最近的一条日期已经是2022/8/1了&#xff0c;以前我还真没留意过这些&#xff0c;我这人懒…...

OpenGL(三)——着色器

目录 一、前言 二、Shader 2 Shader 2.1 顶点着色器 2.2 片段着色器 三、APP 2 Shader 四、顶点颜色属性 五、着色器类C 一、前言 着色器Shader是运行在GPU上的小程序&#xff0c;为图形渲染管线的某个特定部分而运行。各阶段着色器之间无法通信&#xff0c;只有输入和输…...

【MySQL】单表查询

一、表的准备 查询操作的SQL演示将基于下面这四张表进行&#xff0c;我们先创建好这四张数据表&#xff0c;并为其添加数据。 1、第一张表为部门表&#xff0c;名称为包含三个字段&#xff1a;部门编号&#xff08;deptno&#xff09;&#xff0c;部门名称&#xff08;dname&…...

第一章 安装Unity

使用Unity开发游戏的话&#xff0c;首先要安装Unity Hub和Unity Editor两个软件。大家可以去官方地址下载&#xff1a;https://unity.cn/releases/full/2020 &#xff08;这里我们选择的是2020版本&#xff09; Unity Hub 是安装 Unity Editor、创建项目、管理帐户和许可证的主…...

20230425----重返学习-vue项目-vue自定义指令-vue-cli的配置

day-057-fifty-seven-20230425-vue项目-vue自定义指令-vue-cli的配置 vue项目 vuex版 普通版纯axios&#xff1a;切换页面&#xff0c;就会重新发送一次ajax请求普通版升级&#xff1a;vuex版vuex的常用功能 vuex 数据通信vuex 缓存数据 前进后退&#xff0c;切换页面&#…...

el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数

使用el-input-number标签 也可以使用typenumbe和v-model.number属性&#xff0c;两者结合使用&#xff0c;能满足大多数需求&#xff0c;如果还不满足&#xff0c;可以再结合正则表达式过滤 <el-input v-model.number"value" type"number" /> el-i…...

Docker Compose的常用命令与docker-compose.yml脚本属性配置

Docker Compose的常用命令与配置 常见命令ps&#xff1a;列出所有运行容器logs&#xff1a;查看服务日志输出port&#xff1a;打印绑定的公共端口build&#xff1a;构建或者重新构建服务start&#xff1a;启动指定服务已存在的容器stop&#xff1a;停止已运行的服务的容器&…...

with语句和上下文管理器(py编程)

1. with语句的使用 基础班向文件中写入数据的示例代码: # 1、以写的方式打开文件f open("1.txt", "w")# 2、写入文件内容f.write("hello world")# 3、关闭文件f.close()代码说明: 文件使用完后必须关闭&#xff0c;因为文件对象会占用操作系统…...

《JavaEE初阶》HTTP协议和HTTPS

《JavaEE初阶》HTTP协议和HTTPS 文章目录 《JavaEE初阶》HTTP协议和HTTPSHTTP协议是应用层协议:使用Fiddler抓取HTTP请求和响应:Fiddler的下载和基本使用:Fiddler的中间代理人身份:其他抓包工具: 先简单认识HTTP请求与HTTP响应:HTTP请求:HTTP响应: HTTP请求详解:首行&#xff1…...

微信小程序 | 基于高德地图+ChatGPT实现旅游规划小程序

&#x1f388;&#x1f388;效果预览&#x1f388;&#x1f388; ❤ 路劲规划 ❤ 功能总览 ❤ ChatGPT交互 一、需求背景 五一假期即即将到来&#xff0c;在大家都阳过之后&#xff0c;截止到目前这应该是最安全的一个假期。所以出去旅游想必是大多数人的选择。 然后&#x…...

Excel技能之实用技巧,高手私藏

今天来讲一下Excel技巧&#xff0c;工作常用&#xff0c;高手私藏。能帮到你是我最大的荣幸。 与其加班熬夜赶进度&#xff0c;不如下班学习提效率。能力有成长&#xff0c;效率提上去&#xff0c;自然不用加班。 消化吸收&#xff0c;工作中立马使用&#xff0c;感觉真不错。…...

黑马程序员Java零基础视频教程笔记-运算符

文章目录 一、算数运算符详解和综合练习二、隐式转换和强制转换三、字符串和字符的加操作四、自增自减运算符五、赋值运算符和关系运算符六、四种逻辑运算符七、短路逻辑运算符八、三元运算符 一、算数运算符详解和综合练习 1. 运算符和表达式 ① 运算符&#xff1a;对字面量…...

Microsoft Data Loss Prevention(DLP)部署方案

目录 一、前言 二、部署流程 步骤一:确定数据需求 步骤二:规划信息保护策略...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...