模拟
2023-3-7
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
模拟就是用计算机来模拟题目中要求的操作。
 
一只长度不计的蠕虫位于英寸深的井的底部。它每次向上爬英寸,但是必须休息一次才能再次向上爬。在休息的时候,它滑落了英寸。之后它将重复向上爬和休息的过程。蠕虫爬出井口需要至少爬多少次?如果蠕虫爬完后刚好到达井的顶部,我们也设作蠕虫已经爬出井口。
 

分隔链表

题目:
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。应当 保留 两个分区中每个节点的初始相对位置。
示例:
notion image
维护两个链表 链表按顺序存储所有小于 的节点, 链表按顺序存储所有大于等于 的节点。遍历完原链表后,只要将 链表尾节点指向链表的头节点即能完成对链表的分隔。
 
 
 
 
 

对角线遍历

题目:给你一个大小为m x n的矩阵mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。
示例:
 
 
一共有条对角线,相邻的对角线的遍历方向不同,当前遍历方向为从左下到右上,则紧挨着的下一条对角线遍历方向为从右上到左下;
设对角线从上到下的编号为
  • 为偶数时,则第 条对角线的走向是从下往上遍历
  • 为奇数时,则第 条对角线的走向是从上往下遍历
 
当第 条对角线从下往上遍历时,每次行索引减1,列索引加1,直到矩阵的边缘为止:
  • 时,则此时对角线遍历的起点位置为
  • 时,则此时对角线遍历的起点位置为
 
当第 条对角线从上往下遍历时,每次行索引加1,列索引减1,直到矩阵的边缘为止:
  • 时,则此时对角线遍历的起点位置为
  • 时,则此时对角线遍历的起点位置为
 
 

第 N 位数字

题目:给一个整数n ,请你在无限的整数序列[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...]中找出并返回第n位上的数字
示例:
是一位数, 一位数共有9个, 总计产生位数字, 是两位数, 两位数共有个, 总计产生位数字 ...
可以把位数里产生的数字个数算出来它等于位数字。 由此通过一个循环,对不同位数一共产生了多少位数字做累计并和进行比较,就可以判断出对应的数字是几位数字。
找到这个具体的数字,假设 对应的数字是 。 先扣掉比 位数低的数字一共占用了多少位。这个在第一步里就求出来了,假设得到的值为 。 剩余的 都是由 位数贡献的,因而求除求余就可以知道 对应的是第几个 位数。
 
为例。 第一步扣掉; 得到对应的是一个三位数。 且即说明是第一个三位数。说明是第一个三位数的第一个数字。 而第一个三位数是,从而得到答案
 
 

验证IP地址

题目:
给定一个字符串queryIP。如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。
有效的IPv4地址 是“x1.x2.x3.x4” 形式的IP地址。 其中0 <= xi <= 255 且 xi 不能包含 前导零。例如: “192.168.1.1” 、 “192.168.1.0” 为有效IPv4地址, “192.168.01.1” 为无效IPv4地址; “192.168.1.00” 、 “192.168@1.1” 为无效IPv4地址。
一个有效的IPv6地址 是一个格式为“x1:x2:x3:x4:x5:x6:x7:x8” 的IP地址,其中:
  • 1 <= xi.length <= 4
  • xi 是一个 十六进制字符串 ,可以包含数字、小写英文字母( 'a' 到 'f' )和大写英文字母( 'A' 到 'F' )。
  • 在 xi 中允许前导零。
例如"2001:0db8:85a3:0000:0000:8a2e:0370:7334""2001:db8:85a3:0:0:8A2E:0370:7334"是有效的IPv6 地址,而 "2001:0db8:85a3::8A2E:037j:7334" 和 "02001:0db8:85a3:0000:0000:8a2e:0370:7334" 是无效的 IPv6 地址。
示例:
首先查找给定的字符串 中是否包含符号 。如果包含,那么我们需要判断其是否为 IPv4 地址;如果不包含,我们则判断其是否为 IPv6 地址。
对于 IPv4 地址而言,它包含4个部分,用 隔开。因此可以存储相邻两个 出现的位置 (当考虑首个部分时, ;当考虑最后一个部分时, ,其中 是字符串的长度),那么子串 就对应着一个部分。需要判断:
  • 它的长度是否在 之间(虽然这一步没有显式要求,但提前判断可以防止后续计算值时32位整数无法表示的情况)
  • 它是否只包含数字
  • 它的值是否在 之间
  • 它是否不包含前导零。具体地,如果它的值为0,那么该部分只能包含一个0,即 ;如果它的值不为 0,那么该部分的第一个数字不能为0,即 不为0
 
对于 IPv6 地址而言,它包含8个部分,用 隔开。同样地,可以存储相邻两个 出现的位置,那么子串就对应着一个部分。需要判断:
  • 它的长度是否在 [1,4] 之间;
  • 它是否只包含数字,或者 ,或者
除了上述情况以外,如果无法找到对应数量的部分,那么给定的字符串也不是一个有效的 IP 地址。
  • 计算机基础
  • 数据结构与算法
  • 枚举递归
    目录