0%

LeetCode 1838题

原题链接: https://leetcode.com/problems/frequency-of-the-most-frequent-element/

关键点:
1、最后的最频繁出现的元素一定在数组中,如果不在数组中,也可以通过整体少increase几次的方式,回到数组元素中。
2、最后的结果元素在最后加工前元素中,是最大的。
3、以上两点可以得到,将数组排序后,元素一定在数组的一个窗口内,不可能窗口内有元素被跳过。

综上所述,代码如下

Read more »

题目如下

https://leetcode.com/problems/magnetic-force-between-two-balls/

这里是按照二分查找数据的原理处理的,原理如下:

一个数组,下标为最小的距离,数组元素为最多可以容纳的球的数量。

这个数组单调递增。不过会有重复元素的出现,比如 n~m的距离,容纳的球的数量都是D个。这种情况下,m即为结果。

解题思路如下:

https://leetcode.com/problems/magnetic-force-between-two-balls/discuss/794070/PythonC%2B%2B-Binary-search-solution-with-explanation-and-similar-questions

之所以是用

int mid = r - (r - l) / 2;

来查找中间位置,是因为需要通过这个找到最右边的m。

1. redis主从同步概述

redis的主从同步与mysql不一样,redis都是通过同步命令的方式进行的。

具体的同步方式分为两种,全量同步、部分重同步

Read more »

1、binlog文件

Binlog的日志格式可以在命令行中设置

show variables like '%log%';        //要重新登入一次才会看到该变量生效
set global binlog_format='row'/'statement'/'mixed'

binlog有三种格式:Statement, Row和Mixed.

Read more »

redis的非阻塞网络模型

建立连接时:

    // 非阻塞
    anetNonBlock(NULL,fd);
    // 禁用 Nagle 算法
    anetEnableTcpNoDelay(NULL,fd);
    // 设置 keep alive
    if (server.tcpkeepalive)
        anetKeepAlive(NULL,fd,server.tcpkeepalive);
    // 绑定读事件到事件 loop (开始接收命令请求)
    if (aeCreateFileEvent(server.el,fd,AE_READABLE,
        readQueryFromClient, c) == AE_ERR)
    {
        close(fd);
        zfree(c);
        return NULL;
    }
Read more »

C++默认生成4个成员函数.

默认构造函数(default constructor), 析构函数(destructor), 复制构造函数(copy constructor), 赋值运算符函数(assignment);

C++11新增两个:

move构造函数(右值引用构造函数)
move赋值函数

Read more »

set:

当只有少量数字的时候,set是基于intset实现的。当数据量大了,或者有字符存在的时候,基于dict实现,其中value为null