2022-10-21
原文地址: https://www.zhangxinxu.com/life/2019/03/study/张鑫旭老师真是吾辈前进的灯塔
招聘高峰季,最近面试了一些人,聊到关于学习话题的时候,发现很多人有学不进去,没时间学的问题,加上之前断断续续有很多人咨询我关于如何学习的问题,我觉得可以好好讲讲我对于学习这件事的一些经验和看法。
这些经验与看法不局限于IT...
阅读全文
2022-10-14
首先质数的概念为:
质数(Prime number,又称素数),[1] 指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数
1. 怎么高效判断数n是否为质数?最为暴力的方法便是从2~n-1中逐个遍历得i,判断n%i==0是否成立,如果成立说明n不为质数(如下代码)
1234567bool is_prime(int x)&...
阅读全文
2022-10-08
先整理一下思路:A吃B,B吃C,C吃A,由此形成以下的环形关系因为会一直循环(即对3取余做条件),我们可以用一个并查集来维护查询他们的身份
想象一个食人族家庭来说明他们之间的关系第1代吃掉第0代,第2代吃掉第1代,第3代吃第2代,第0代会吃掉第3代那么如果有吃掉第3代的第4代,那么他必定与第0代是同一代
采用并查集,维护多一个数组d来表示当前节点到根节点...
阅读全文
2022-10-05
剑指 Offer II 067. 最大的异或
题目如下:
首先考虑使用朴素算法完成,数据的长度为10^5^,O(n^2^)的复杂度直接爆了,肯定会TL回顾一下Trie树的结构,我们可以将数组里的所有数二进制形式预处理出来一颗字典树
如对于 [3,2,1] 这个序列:
在第一层遍历中,我们首先选择 3 这个数 ,那么序列中什么数与3异或后最大呢? 观察3的...
阅读全文
2022-10-04
队列即是一个特殊的数组,这个数组最前面的元素称为 队头 尾部元素称为 队尾
1234567891011121314151617181920212223242526272829303132#include <iostream>using namespace std;const int N = 100010;int q[N];//[hh, tt] ...
阅读全文
2022-10-03
我们先考虑暴力做法:
1234567891011121314151617181920212223#include <iostream>using namespace std;const int N = 1e6+10;int arry[N];int main(){ int n; cin>>n; for(int...
阅读全文
2022-10-03
数组模拟栈
stk[N] 栈; tt表示栈顶所在索引下标(初始时tt=0,表示栈为空)
入栈: ++tt,存入x。 stk[++tt] = x;
出栈: tt–
empty: tt<=0时栈为空.top <= 0 ? “empty” : “not empty”;
query: 返回栈顶元素 stk[...
阅读全文
2022-09-30
使用数组模拟链表相对于使用结构指针,拥有更高的效率(省去了动态分配内存的环节)
c++代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <iostream>using namespace std;co...
阅读全文
2022-09-29
归并排序模板归并和 快排 同样属于分治算法
12345678910111213141516171819int tmp[N];void merge_sort(int * p,int l,int r){ //递归的终止条件 if(l>=r) return; //1.确定子问题分界点 int mid = l+r>>...
阅读全文
2022-09-27
快排属于分治算法,分治算法都有以下几个步骤。
1.分成子问题 -> 2.递归处理子问题 -> 3.合并子问题
快排的步骤分为:
1.确定基准值 x ,可取随机一个元素2.调整区间,使得 [l,x]<=x** , **[x,r]>=x3.递归处理左右区间
12345678910111213141516void q...
阅读全文
上一页 1 … 4 5 6 7 下一页