第58题:最后一个单词的长度 给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。...02、题解分析 因为我们要获取的是最后一个单词的长度,不难想到可以从尾开始遍历。 题中的陷阱在于,结尾处仍然可能有空格。...所以一般的解题思路为,先去掉末尾的空格,然后从尾向前开始遍历,直到遇到第一个空格处结束。 但这里可以取一个巧,我们可以通过一个 count 来记数,从第一个不为空格的数开始记起。...,然后直接定位到最后一个单词的位置,将其截取下来获取长度。...既然我们 trim 都用了,那为什么我们不直接使用 split 得到最后一个单词的长度呢?
CSS3 :last-child 选择器 指定属于其父元素的最后一个子元素的 p 元素的背景色 p:last-child { background:#ff0000; } CSS3 :nth-last-child...() 选择器 规定属于其父元素的第二个子元素的每个 p 元素,从最后一个子元素开始计数: p:nth-last-child(2) { background:#ff0000; } p:last-child...等同于 p:nth-last-child(1) CSS3 :nth-last-of-type() 选择器 规定属于其父元素的第二个 p 元素的每个 p,从最后一个子元素开始计数: p:nth-last-of-type...(2) { background:#ff0000; } 对于:nth-child选择器,在简单白话文中,意味着选择一个元素: 这是个段落元素 这是父标签的第二个孩子元素 对于:nth-of-type选择器...,意味着选择一个元素: 选择父标签的第二个段落子元素 例子: p:nth-child(2)悲剧了,其渲染的结果不是第二个p标签文字变红,而是第一个p标签,也就是父标签的第二个子元素。
2021-02-09:如何删除一个链表的倒数第n个元素? 福哥答案2021-02-09: 1.创建虚拟头元素,虚拟头元素的Next指针指向头元素。...2.根据快慢指针求倒数第n+1个元素,假设这个元素是slow。 3.设置元素slow的Next指针。slow.Next=slow.Next.Next。 4.返回虚拟头元素的Next指针。...= nil { fmt.Print(ret.Val, " ") ret = ret.Next } fmt.Println("\r\n-------")...k := 4 fmt.Println("删除倒数第", k, "个元素后:") ret = DeleteNode(head, k) for ret !
正文 好像也是一个不难的问题,刚视频里看到的,就记一下吧。 下面是表中原始的数据结构,做了一个倒叙排序: select * from Employee order by Salary desc ?...首先来看一下如何取Salary第二的记录。...Salary desc ) as result order by Salary asc 原理是先根据Salary降序排序获取到前3条记录,作为Result一个结果集 ?...下面再来看一下使用ROW_NUMBER(顺道试验了Rank,Dense_Rank这两个函数)这个函数的写法: --获取salary排行第三的人的信息 select * from ( select * ,...注意一下B和C的salary是一样的,但是得到的3个number值是不同的,项目中看具体情况,选择需要的函数。 我们这里取RowNumber. ? 结果也是一样的。 就到这里吧。
2021-09-24:给定一个正整数 n ,输出的第 n 项。前五项如下:1:1。2:11。3:21。4:1211。5:111221。第一项是数字 1 。...描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"。描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"。...描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"。...描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"。返回第N项的字符串。 福大大 答案2021-09-24: 自然智慧。递归。...int) string { if n < 1 { return "" } if n == 1 { return "1" } last
2021-09-17:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗? 福大大 答案2021-09-17: 双指针。...2.右节点先走,遍历n+1个节点。 3.继续遍历,左右节点都指向next。 4.遍历完成后,左节点的next指向左节点的next的next。 5.返回preHead的next节点。...时间复杂度:O(N)。 空间复杂度:O(1)。 代码用golang编写。...} type ListNode struct { val int next *ListNode } func removeNthFromEnd(head *ListNode, n...ListNode{val: -1} preHead.next = head right := preHead left := preHead for i := 0; i < n+
2022-10-30:给你一个长度为 n 的整数数组 rolls 和一个整数 k 。...你扔一个 k 面的骰子 n 次,骰子的每个面分别是 1 到 k , 其中第 i 次扔得到的数字是 rollsi 。 请你返回 无法 从 rolls 中得到的 最短 骰子子序列的长度。...扔一个 k 面的骰子 len 次得到的是一个长度为 len 的 骰子子序列 。 注意 ,子序列只需要保持在原数组中的顺序,不需要连续。...这次java的运行速度最高,比rust都强了不少。c++表现不好,不见运行速度低,而且内存占用大。rust内存占用最小,go语言次之。 时间复杂度:O(n+k)。 空间复杂度:O(k)。
#第一个文件 Order.txt 中的第3列修改为另一个文件 ip2.txt,或者第n列 #!.... ----------------------# Oy=( 1111111 # 默认从0开始,占位 `cat -n Order.txt | awk -F"|" '{print $3}'| sed...cat ip2.txt | awk -F"--" '{print $1}' | sed "s/ //g"` ) echo " 原来数据总量:${#Oy[*]} 更新数据总量:${#up[*]} 被修改的文件
2022-04-27:Alice 有一个下标从 0 开始的数组 arr ,由 n 个正整数组成。...她会选择一个任意的 正整数 k 并按下述方式创建两个下标从 0 开始的新整数数组 lower 和 higher : 对每个满足 0 <= i < n 的下标 i ,lower[i] = arr[i] -...给你一个由 2n 个整数组成的整数数组 nums ,其中 恰好 n 个整数出现在 lower ,剩下的出现在 higher ,还原并返回 原数组 arr 。...大数的第1个数需要循环。 时间复杂度:O(N**2)。 代码用rust编写。代码如下: fn main() { let mut nums: Vec = vec!...= nums.len() as isize; // nums[0] -> 小数组的第0个 let m = n >> 1; // 谁是大数组的第0个?
2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字符串s为空: 选择s的最长前缀,该前缀最多包含k个不同字符; 删除该前缀,递增分割计数。...如果有剩余字符,它们保持原来的顺序。 在操作之前,可以修改字符串s中的一个字符为另一个小写英文字母。 在最佳情况下修改至多一次字符后,返回操作结束时得到的最大分割数量。...大体步骤如下: 1.创建一个递归函数dfs,用于计算分割得到的最大数量。 2.函数中,首先检查是否到达字符串末尾,若是则返回 1(表示完成一个分割)。 3.使用memo记录中间结果,加快计算速度。...,这个子串的最后一个字母在 i-1 // s[i] 作为下一段的第一个字母,也就是 bit 作为下一段的 mask 的初始值 res = dfs(i+1,...,这个子串的最后一个字母在 i-1 // j 作为下一段的第一个字母,也就是 1<<j 作为下一段的 mask 的初始值
2022-04-18:things是一个N*3的二维数组,商品有N件,商品编号从1~N, 比如things3 = 300, 2, 6, 代表第3号商品:价格300,重要度2,它是6号商品的附属商品, 再比如...things6 = 500, 3, 0, 代表第6号商品:价格500,重要度3,它不是任何附属,它是主商品, 每件商品的收益是价格*重要度,花费就是价格, 如果一个商品是附属品,那么只有它附属的主商品购买了...,它才能被购买, 任何一个附属商品,只会有1个主商品, 任何一个主商品的附属商品数量,不会超过2件, 主商品和附属商品的层级最多有2层。...给定二维数组things、钱数money,返回整体花费不超过money的情况下,最大的收益总和。 答案2022-04-18: 本来想用rust写的,但老是编译不通过,实在没辙。...n } func maxScore(things [][][]int, n, money int) int { dp := make([][]int, n) for i := 0; i < n;
2022-12-22:给定一个数字n,代表数组的长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度为n的数组中,最长递增子序列长度为3的数组,叫做达标数组。...返回达标数组的数量。 1 <= n <= 500, 1 <= m <= 10, 500 * 10 * 10 * 10, 结果对998244353取模, 实现的时候没有取模的逻辑,因为非重点。...// f、s、t : ends数组中放置的数字!...// n : 一共的长度! // m : 每一位,都可以在1~m中随意选择数字 // 返回值:i..... 有几个合法的数组!...// 尤其是理解ends数组的意义! fn number2(n: i32, m: i32) -> i32 { //repeat(vec!
2023-03-18:给定一个长度n的数组,每次可以选择一个数x, 让这个数组中所有的x都变成x+1,问你最少的操作次数, 使得这个数组变成一个非降数组。...如此递归下去,直到最终得到一个非降序列。 由于每个数字都只有两种状态(是否进行操作),因此总时间复杂度为O(2^n * n)。当n比较小的时候,这种方法是可行的,但是当n比较大的时候,它会超时。...定义一个长度为n的数组min,其中mini表示arri..n-1中的最小值。 定义一个长度为m的布尔型数组add,其中m是数组中的最大值。初始化时全部为false。...具体实现过程如下: 定义一个空栈stack和一个长度为n的整型数组res,其中resi表示对于位置i,需要进行的最小操作次数。...最后,我们来介绍第四种方法:利用差分数组。我们可以将每个数字看作一个区间,区间的左右端点就是该数字在数组中出现的位置。
2023-05-17:一个正整数如果能被 a 或 b 整除,那么它是神奇的。给定三个整数 n , a , b ,返回第 n 个神奇的数字。...2.初始化变量 l 为0,变量 r 为 (n * min(a, b)),其中 min(a, b) 表示 a 和 b 中的最小值。在这个范围内通过二分查找获得第 n 个神奇数字。...4.如果出现的神奇数字总数大于或等于 n,则将当前猜测值存储在变量 ans 中,并将右边界向左移动一位(即缩小区间的范围)。...5.如果出现的神奇数字总数小于 n,则将左边界向右移动一位(即扩大区间的范围),并继续迭代。6.二分查找过程结束后,返回答案 ans % (10^9 + 7)。...在这个算法中,使用了二分查找来搜索第 n 个神奇数字。在最坏情况下,二分查找的迭代次数为 O(logN)。因此,时间复杂度为 O(logN)。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作 为一个通用的、介于XPointer与XSL间的语法模型。...项目子项---jobbole (1)打开项目,在项目根目录下新建一个main.py,用于调试代码。...页面分析在FireFox浏览器下按F12进入开发者模式,选择查看器左边的选取图标功能,然后将鼠标移动到标题处,在查看器中会自动为我们找到源码中标题的位置,如上图分析,标题应该在html下的body中的第一个...div中的第三个div中的第一个div中的第一个div中的h1标签中,那么Xpath路径即为: /html/body/div[]/div[]/div[]/div[]/h1 是不是感觉到很复杂,哈哈哈,...:Xpath的表达方式不止一种,可能某个内容的Xpath有两种或者更多,大家觉得怎么好理解就使用哪一个。
2023-04-14:n对情侣坐在连续排列的 2n 个座位上,想要牵到对方的手,人和座位由一个整数数组 row 表示,其中 rowi 是坐在第 i 个座位上的人的ID,情侣们按顺序编号,第一对是 (0,...1),第二对是 (2, 3),以此类推,最后一对是 (2n-2, 2n-1)。...返回 最少交换座位的次数,以便每对情侣可以并肩坐在一起。每次交换可选择任意两人,让他们站起来交换座位。输入: row = 0,2,1,3。输出: 1。输入: row = 3,2,0,1。输出: 0。...实现计算最少交换座位次数的函数 min_swaps_couples,首先获取座位数量 n,然后初始化并查集 uf,遍历相邻的座位,将情侣所在的连通分量合并。最后返回需要交换座位的最小次数。...= fj { // 如果i和j不在同一个连通分量中 if self.size[fi as usize] >= self.size[fj as usize] {
之前有专门讲过使用xpath对元素定位的使用,下面要介绍css选择器来进行元素定位。...元素 3 :last-of-type p:last-of-type 选择每个p元素是其父级的最后一个p元素 3 :only-of-type p:only-of-type 选择每个p元素是其父级的唯一p元素...(n) p:nth-last-child(2) 选择每个p元素的是其父级的第二个子元素,从最后一个子项计数 3 :nth-of-type(n) p:nth-of-type(2) 选择每个p元素是其父级的第二个...p元素 3 :nth-last-of-type(n) p:nth-last-of-type(2) 选择每个p元素的是其父级的第二个p元素,从最后一个子项计数 3 :last-child p:last-child...选择每个p元素是其父级的最后一个子级。
2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, hi是第i个人的身高, vi是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的。...返回所有符合要求的子序列中,分数最大累加和是多大。 n <= 10的5次方, 1 <= hi <= 10的9次方, 1 <= vi <= 10的9次方。 来自字节。...let mut h = random_array(n, vv); let mut v = random_array(n, vv); if right(&mut h, &mut...("测试结束"); } // 为了测试 // 绝对正确的暴力方法 fn right(h: &mut Vec, v: &mut Vec) -> i32 { return process...rank0 = h.clone(); rank0.sort(); let mut st = SegmentTree::new(n); for i in 0..n {
\根节点 网页的第一个元素节点 网页的根节点通常为\......() 最后一个节点 //divlast() 选择所有\节点且该节点是其父级的最后一个子节点...= > = 中的第2个\子节点+...- *、 div mod 加减乘除求余 /html/body/divlast()-1 选择\中的倒数第2个\<div...,实质都是xpath提供的函数,本篇文章只列出了常用函数根据W3C标准,第一个节点编号应该是1,但在IE5及更高版本中第一个节点编号是0xpath轴(axis)轴:表示所选节点与当前节点之间的树关系,用来筛选对于当前节点有相同关系的一类节点轴格式
领取专属 10元无门槛券
手把手带您无忧上云