Category: 学习笔记

C++的 map 当键(Key)不存在的时候会发生什么?

在面试流程(例如筛选)的早期阶段,一位 Google 招聘人员曾向我问过这个问题。 在C++中,当你使用std::map访问一个不存在的键时,行为取决于你是如何访问它的。 使用下标操作符 访问时 如果键不存在,std::map 会默认插入一个该键的元素,并为其赋值为类型的默认值。比如,如果 map 的值类型是 int,那么它会插入该键并赋值为 0。 例子: std::map<int, int> myMap; int value = myMap; // 如果键10不存在,会插入myMap = 0 使用 at() 方法访问时 如果键不存在,at() 会抛出 …

Pascal 编程语言之父 尼克劳斯·沃斯 Niklaus Wirth RIP

2024年1月1号,计算机科学家/Pascal 编程语言之父 尼克劳斯·沃斯 Niklaus Wirth 离世(89岁),一代巨星陨落,让很多人感到难过。 FreePascal.org 网站上发布了: The creator of the Pascal Language, Niklaus Wirth, has passed away on January 1st. Free Pascal would not have existed without …

弹性碰撞简介(物理)

弹性碰撞(Elastic Collision)是指两个物体发生碰撞并反弹,而没有发生任何永久形变或产生热量,从而保守了动能和动量。换句话说,在弹性碰撞中,系统(由两个物体组成)在碰撞前的总动能等于碰撞后的总动能。 以下是弹性碰撞中满足的两个主要守恒定律: 动量守恒 动量守恒:系统的总动量是守恒的。也就是说,碰撞前的总动量等于碰撞后的总动量。数学上,如果有两个物体,它们的质量分别为 and , 碰撞前的速度分别为 and 碰撞后的速度分别为 则动量守恒可以表示为: 动能守恒 系统的总动能是守恒的。也就是说,碰撞前各个物体的动能之和等于碰撞后它们的动能之和。每个物体的动能为 , 其中 是质量, 是物体的速度。因此,对于两个物体,动能守恒可以写成以下数学公式: TLDR; 弹性碰撞简介 弹性碰撞是一种理想化情况,在现实世界中,尤其是在宏观物体之间,是相当罕见的,因为几乎总是有一些动能转化为其他形式的能量,如声能或热能。然而,弹性碰撞对于某些系统(例如理想气体中气体分子之间的碰撞)来说是一个很好的近似,这些系统中能量损失可以忽略不计,或者像超级弹力球或台球这样的系统中,与涉及的动能相比,能量损失相对较小。 英文:Introduction to Elastic Collision (Physics) 本文一共 433 个汉字, 你数一下对不对. …

随机数独游戏的算法设计 (Sudoku)

给定一个数独(Sudoku), 我们可以使用深度优先搜索算法(DFS), 迭代加深搜索算法(IDS)或广度优先搜索算法(BFS)来寻找可能的解. 反过来, 如果我们要设计一个算法来生成有效的数独, 我们需要澄清以下问题: 生成的数独(Sudoku)必须有可解状态吗? 是的 生成的数独(Sudoku)有多个解吗? 我们可以假设返回的Suduoku只有1个唯一解 生成的数独(Sudoku)的找解难度? 我们可以为此设置一个参数: 简单, 中等或困难 一共有6.671×10^21个有效的数独状态, 如果我们忽略旋转, 镜像状态等重复的状态, 这个数字就降到了5.4×10^9个状态. 我们可以随机生成一个由数字1-9填充的矩阵, 并检查它是否是有效的数独, 但这非常低效, 因为生成的矩阵极有可能不是有效的数独. 设计一个随机数独的算法 为了设计一个有效的算法, 生成一个随机的有效数独, 我们可以采用以下算法: 使用回溯(深度优先搜索)算法来生成一个具有随机性的有效完整数独. 例如, 我们可以随机选择数字, …

谷歌面试题: 迷宫随机生成算法

据说这个是谷歌 Google 的第一轮面试题. 一般这种题目就是: 设计一个迷宫算法 (Design a Maze). 面试中应该先问清楚需求 (Ask Clarifying Questions): 迷宫需要有几条出路? (假定至少1条), 多大的迷宫? 多复杂的迷宫等等. 最容易想到的就是随机生成1和0的地图, 其中1是墙, 0是空路, 不过这种方法生成随机的效率实在是太低, 你可以跑了半天也无法生成一个有效的迷宫, 我们假定有效的迷宫是至少含一条路径. def maze(width, height): m = None while …

教媳妇编程: 学编程最好的方法就是抄代码

我学编程的时候老师就告诉我最好最快的方法就是抄代码, 不管理不理解, 先抄个几遍, 先上手敲几遍有个手感. 当时我学的是 Turbo Pascal 7.0, 高中竞赛编程指定语言, 老师让我抄(敲) 代码, 当时我记得就是抄了些排序的算法, 很快, 对于编程 对于Pascal的语法 有了基本的感觉和了解. 最近在 B站 和 油管频道教媳妇编程, 教了几课后发现媳妇理解得不深, 媳妇说好难, 媳妇说我说的算法她懂但是我敲代码的时候她就一脸懵逼了. 我才意识到编程也是有点小门槛的, 对于学商的媳妇小白来说, 确实入门有点难度, 那就从抄代码开始, 每天抄一小段代码来加深理解. 每周讲一课, …

通过BASH脚本显示树莓PI的温度和频率

我们很容易可以通过以下BASH脚本来显示当前树莓PI的温度和频率. #pi@raspberrypi:~ $ cat ./cpu_freq.sh #!/bin/bash temp=`head -n 1 /sys/class/thermal/thermal_zone0/temp | xargs -I{} awk "BEGIN {printf \"%.2f\n\", {}/1000}"` echo $((`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq`/1000)) MHz, $temp degrees 然后, 我们可以每3秒来显示这个信息: # 每3秒显示 while …