获得徽章 8
赞了这篇沸点
我是一个中介,我虽然贵,我虽然态度差,我虽然威胁租户,虽然租户给了我二百块钱,那又怎么,他居然不在我这租房,居然敢不让我赚钱。他可定比房东和其他中介好欺负,我就要欺负他,我就比同行贵,必须在我这租房,都在我这租房,听到没
136
赞了这篇沸点
#健身大知识# 运动时常,肚子小了,体重没咋变
codeniu于2025-03-14 09:01发布的图片
评论
赞了这篇沸点
最近在参与一个app的内测,看着还不错吧,把你的资产,做成藏品
codeniu于2025-03-14 09:04发布的图片
4
赞了这篇沸点
周五啦,成为已婚人士已经七天啦,掘友们可以祝福我一下嘛[呲牙]
codeniu于2025-03-14 09:07发布的图片
codeniu于2025-03-14 09:07发布的图片
96
#刷题交流#
二叉树的插入操作:
从根节点开始,找到合适的位置插入新节点:
如果新值小于当前节点,向左子树递归插入。
如果新值大于当前节点,向右子树递归插入。
创建并插入新节点。
def insert(root, key):
if root is None:
return Node(key)
if key < root.val:
root.left = insert(root.left, key)
else:
root.right = insert(root.right, key)
return root
展开
评论
#刷题交流#
策略大师:小I与小W的数字猜谜挑战
通过递归和分治的思想,我们可以逐步计算出小I在不同范围内的获胜概率,最终得到小I在整个范围内的获胜概率。
评论
#刷题交流#
61、啊D的最佳飞行路线探索
广度优先搜索(BFS):
从队列中取出一个机场和当前的起飞次数。
如果该机场是终点机场(airports[-1]),返回当前的起飞次数。
否则,将该机场标记为已访问。
将该机场的相邻机场(i-1和i+1)以及同一家航空公司的其他机场加入队列,并更新起飞次数。
展开
评论
#刷题交流#
63、视频推荐的算法
解析输入数据:将输入的字符串转换为整数列表。
排序数据:对整数列表进行升序排序。
计算位置:根据数据的长度计算80百分位数的位置。
获取值:根据计算的位置获取对应的数值。
展开
评论
#刷题交流#
处理连续两次操作的奇偶性限制。可以通过在动态规划的状态中引入一个维度来表示当前操作的奇偶性,从而确保连续两次操作的奇偶性不同。
定义状态:
使用一个二维DP数组dp[i][j],其中i表示当前处理到字符串的第i个字符,j表示当前操作的奇偶性(0表示偶数次操作,1表示奇数次操作)。
dp[i][j]表示在前i个字符中,最后一次操作的奇偶性为j时,可以获得的最大Cion币数。
状态转移:
对于每个字符,需要考虑以下几种情况:
替换操作:如果当前字符和前一个字符相同,我们可以进行替换操作。替换操作的奇偶性需要与上一次操作的奇偶性不同。
删除操作:可以删除当前字符,删除操作的奇偶性也需要与上一次操作的奇偶性不同。
初始化:
初始状态可以设为dp[0][0] = 0和dp[0][1] = -inf,表示在处理第一个字符之前,不进行任何操作。
最终结果:
最终结果为max(dp[n][0], dp[n][1]),其中n是字符串的长度。
展开
评论
#刷题交流#
哈夫曼编码的核心在于它是一种贪心算法。每一步都选择当前局部最优的选择,即选择出现频率最低的字符进行合并,以确保最终树的深度最小,从而实现编码最大压缩。
评论
#刷题交流#
哈夫曼编码是一种用于数据压缩的算法,由大卫·哈夫曼在1952年提出。其主要原理是利用字符出现的频率来构建一棵二叉树,从而生成可变长度的编码,使得常用字符的编码较短,而不常用字符的编码较长,从而在整体上实现数据压缩。
1
#刷题交流#
打卡、128、《找出最长的神奇数列》
这个问题主要运用了滑动窗口和双指针的思想。
滑动窗口:用于动态地扩展和收缩当前正在检查的子序列。
双指针:用于遍历序列并记录当前子序列的起始位置和长度。
解题之后用MarsCode AI 提取算法思想,加深理解
展开
清澈的水果糖于2024-12-25 08:44发布的图片
评论
#刷题交流#
打卡、今日刷题,线上报警问题分类,解题思路:
初始化用户实验集合、遍历 arrayN,将每个用户的实验命中情况存储在集合中。
处理查询、对于每次查询,遍历所有用户,检查其实验命中情况是否符合查询条件。
使用一个辅助函数 check_user_matches_query 来检查用户是否符合当前查询条件。
返回结果、将每次查询的结果存储在列表中,并返回该列表。
展开
评论
#刷题交流#
补卡:43、《还原原始字符串》的中使用用于 BFS 来模拟操作过程。
BFS(Breadth-First Search,广度优先搜索)是一种用于图和树的遍历算法。它从根节点(或起始节点)开始,逐层遍历图或树的节点,直到找到目标节点或遍历完所有节点。BFS 通常使用队列(Queue)来实现,确保每一层的节点都被访问后再访问下一层的节点。

def bfs(graph, start):
# 初始化队列和已访问集合
queue = deque([start])
visited = set([start])

while queue:
node = queue.popleft()
print(node) # 访问节点

# 遍历当前节点的邻居节点
for neighbor in graph[node]:
if neighbor not in visited:
visited.add(neighbor)
queue.append(neighbor)
展开
评论
#刷题交流#
打卡,16、《最大矩形面积》解题思路:
初始化:
创建一个空栈 stack,用于存储数组索引。
初始化 max_area 为 0,用于存储最大矩形面积。
初始化 index 为 0,用于遍历数组。

遍历数组:
当 index 小于数组长度 n 时,执行以下操作:
如果栈为空,或者当前元素的高度大于或等于栈顶元素的高度,将当前索引 index 压入栈中,并将 index 增加 1。
否则,弹出栈顶元素 top_of_stack,计算以 top_of_stack 为最小高度的矩形面积,并更新 max_area。

处理栈中剩余元素:
遍历结束后,栈中可能还剩余一些元素。依次弹出栈顶元素,计算以该元素为最小高度的矩形面积,并更新 max_area。
展开
评论
#刷题交流#
查找最长无重复子串的问题的解题思路:
1、使用两个指针,一个表示当前子串的开始(左指针),一个表示当前子串的结束(右指针)。
2、使用一个集合来存储当前子串中的字符。
3、每次右指针向右移动,检查当前字符是否在集合中:
4、如果在,就移动左指针,直到移除重复字符。
5、如果不在,就将字符添加到集合中,并更新最大长度。
6、重复这个过程,直到右指针遍历完整个字符串。
function lengthOfLongestSubstring(s) {
const charSet = new Set(); // 用于存储无重复字符
let left = 0; // 左指针
let maxLength = 0; // 记录最大长度

for (let right = 0; right < s.length; right++) {
// 当右指针指向的字符在集合中,移动左指针
while (charSet.has(s[right])) {
charSet.delete(s[left]);
left++;
}
// 添加右指针指向的字符到集合中
charSet.add(s[right]);
// 更新最大长度
maxLength = Math.max(maxLength, right - left + 1);
}

return maxLength;
}


const inputString = "abcabcbb";
console.log(lengthOfLongestSubstring(inputString)); // 输出: 3 ("abc" 是最长无重复子串)
展开
评论
#刷题交流#
动态规划的应用:有 n 阶台阶,每次可以爬 1 阶或 2 阶,问有多少种不同的方式爬到 n 阶。
def climb_stairs(n):
if n <= 2:
return n
dp = [0] * (n + 1)
dp[1], dp[2] = 1, 2

for i in range(3, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]

return dp[n]
展开
评论
#刷题交流#
归并排序类问题,解题思路
分解:将数组分为两半。
解决:递归地对每个子数组进行归并排序。
合并:将两个已排序的子数组合并成一个大的已排序数组。
function mergeSort(array):
if length(array) <= 1:
return array
mid = length(array) / 2
left = mergeSort(array[0:mid])
right = mergeSort(array[mid:end])
return merge(left, right)

function merge(left, right):
result = []
while left and right are not empty:
if left[0] <= right[0]:
result.append(left[0])
left.remove(0)
else:
result.append(right[0])
right.remove(0)
return result + left + right
展开
评论
#刷题交流#
打卡:快速排序:分解:选取一个“基准”(pivot),将数组分为小于基准和大于基准的两部分。
解决:对这两部分递归地进行快速排序。
合并。

function quickSort(array):
if length(array) <= 1:
return array
pivot = array[length(array)/2]
left = [x for x in array if x < pivot]
middle = [x for x in array if x == pivot]
right = [x for x in array if x > pivot]
return quickSort(left) + middle + quickSort(right)
展开
评论
下一页
个人成就
文章被点赞 104
文章被阅读 8,969
掘力值 237
收藏集
2
关注标签
8
加入于