C# 类型

值类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;

public struct MutablePoint
{
public int X;
public int Y;

public MutablePoint(int x, int y) => (X, Y) = (x, y);

public override string ToString() => $"({X}, {Y})";
}

public class Program
{
public static void Main()
{
var p1 = new MutablePoint(1, 2);
var p2 = p1;
p2.Y = 200;
Console.WriteLine($"{nameof(p1)} after {nameof(p2)} is modified: {p1}");
Console.WriteLine($"{nameof(p2)}: {p2}");

MutateAndDisplay(p2);
Console.WriteLine($"{nameof(p2)} after passing to a method: {p2}");
}

private static void MutateAndDisplay(MutablePoint p)
{
p.X = 100;
Console.WriteLine($"Point mutated in a method: {p}");
}
}
// Expected output:
// p1 after p2 is modified: (1, 2)
// p2: (1, 200)
// Point mutated in a method: (100, 200)
// p2 after passing to a method: (1, 200)

如上述代码所示,对值类型的修改只会作用到变量本身,对给他赋值的右值变量没有影响。

阅读更多

LeetCode 42

思路

经典的双指针问题,首先让左右两指针分别指向数组的头和尾,并维护两个变量,left_maxright_max用来存储当前左侧和右侧的最大值。假设,当前左侧的柱形高度低于右侧,那么如果左侧的柱形低于left_max的高度,那么当前柱形的上方一定能积水,否则,一定没有积水,那么我们就将left_max的高度更新为当前柱形的高度。右侧同理。那么用此方法,使用双指针遍历完所有的柱形之后,总的积水量就可以得出来了。

阅读更多

探究C++迭代器失效问题

起因

在LeetCode上做题的时候遇到一道需要手动实现deque的题目,因为需要通过一个哈希表经过O(1)的时间来访问到deque中的每个节点。于是机智的我想到了通过iterator来访问节点的方法,但是出乎意料的是出现了内存访问问题。最后定位到问题出在通过哈希表中储存的iterator来访问内存中的内容时,指针已经失效了。

阅读更多

关系数据库设计

数据库设计与E-R模型

实体-联系模型

实体集&联系集

实体-联系(entity-relationship,E-R)。实体表示现实世界中可区别于所有其他对象的的一个“事物”或“对象”。每个实体有一组性质,其中一些性质的值可以唯一的标示一个实体。实体集(entity set)是具有相同类型的一个实体集合。外延(extension)指属于实体集的实体的实际的集合。实体通过一组属性(attribution)来表示,每个属性有一个值(value)。

阅读更多

B+-trees

What is a B+-tree

Most queries can be executed more quickly if the values are stored in order. But it’s not practical to hope to store all the rows in the table one after another, in sorted order, because this requires rewriting the entire table with each insertion or deletion of a row.

阅读更多

Approximation

Polynomial-time approximation scheme

In computer science, a polynomial-time approximation scheme (PTAS) is a type of approximation algorithm for optimization problems (most often, NP-hard optimization problems).

阅读更多

NP-completeness

NP, P, NP-complete and NP-Hard

To solve the problem of NP-completeness. Firstly, we need to figure out what is NP, P, NP-complete and NP-Hard.

阅读更多