4道拼夕夕算法题,没得100分的,确定不啃[阿里云算法笔试合集]?

【阿里】算法工程师笔试题整理(13&14年) 选择题1、一次内存访问,SSD硬盘访问和SATA硬盘随机访问的时间分别是()A、几微秒,几毫秒,几十毫秒 B、几十纳秒,几十微秒,几十毫秒 C、几十纳秒,几十微秒,几十毫秒 D、几微秒,几十微秒,几十毫秒 解析:内存访问速度通常在50ns到80ns范围内,SSD硬盘的访问速度一般是SATA硬盘的一千多倍,所以答案选C 2、8进制数256,转化成7进制数是(B)A、356 B、336 阅读详情

废话不多说,现在我给你4道拼多多的笔试算法题,你觉得你可以得多少分?

 

不管会不会,请继续看文末的[阿里云算法笔试合集],意外从朋友那里嫖的,这是一本能“在线”编程的程序员面试宝典,分享给有需要的朋友,直接点这可白嫖

第一题:按题意模拟,注意第N次到的话特判,否则只能过96%

#include <bits/stdc++.h> using namespace std;using LL = long long; 
int k, n;int x;signed main() {  // freopen("in", "r", stdin);
  // freopen("out", "w", stdout);
  while (~scanf("%d%d", &k, &n)) {    int cur = 0, cnt = 0;    int ok = 0;    for (int i = 1; i <= n; i++) {      scanf("%d", &x);      if (ok) continue;      if (cur + x == k) {        if(n != i) ok = 1;
        cur += x;
      } else if (cur + x > k) {
        cnt++;
        cur = k - (cur + x - k);
      } else {
        cur += x;
      }
    }    if (ok || k == 0) {      printf("paradox\n");
    } else {      printf("%d %d\n", k - cur, cnt);
    }
  }  return 0;
}

第二题:我是枚举了24种同构+并查集做的,一定有聪明的小朋友写出了预处理

#include <bits/stdc++.h>using namespace std;using LL = long long;#define A 1#define B 2#define C 3#define D 4#define E 5#define F 6const int maxn = 1010;int n;int dice[maxn][7];int pre[maxn];int find(int x) {  return x == pre[x] ? x : pre[x] = find(pre[x]);
}void unite(int x, int y) {
  x = find(x); y = find(y);
  pre[x] = y;
}int check(int x, int y) {  if (dice[x][1]==dice[y][A]&&dice[x][2]==dice[y][B]&&dice[x][3]==dice[y][C]&&dice[x][4]==dice[y][D]&&dice[x][5]==dice[y][E]&&dice[x][6]==dice[y][F]) return 1;  if (dice[x][1]==dice[y][C]&&dice[x][2]==dice[y][D]&&dice[x][3]==dice[y][B]&&dice[x][4]==dice[y][A]&&dice[x][5]==dice[y][E]&&dice[x][6]==dice[y][F]) return 1;  if (dice[x][1]==dice[y][B]&&dice[x][2]==dice[y][A]&&dice[x][3]==dice[y][D]&&dice[x][4]==dice[y][C]&&dice[x][5]==dice[y][E]&&dice[x][6]==dice[y][F]) return 1;  if (dice[x][1]==dice[y][D]&&dice[x][2]==dice[y][C]&&dice[x][3]==dice[y][A]&&dice[x][4]==dice[y][B]&&dice[x][5]==dice[y][E]&&dice[x][6]==dice[y][F]) return 1;  if (dice[x][1]==dice[y][A]&&dice[x][2]==dice[y][B]&&dice[x][3]==dice[y][D]&&dice[x][4]==dice[y][C]&&dice[x][5]==dice[y][F]&&dice[x][6]==dice[y][E]) return 1;  if (dice[x][1]==dice[y][C]&&dice[x][2]==dice[y][D]&&dice[x][3]==dice[y][A]&&dice[x][4]==dice[y][B]&&dice[x][5]==dice[y][F]&&dice[x][6]==dice[y][E]) return 1;  if (dice[x][1]==dice[y][B]&&dice[x][2]==dice[y][A]&&dice[x][3]==dice[y][C]&&dice[x][4]==dice[y][D]&&dice[x][5]==dice[y][F]&&dice[x][6]==dice[y][E]) return 1;  if (dice[x][1]==dice[y][D]&&dice[x][2]==dice[y][C]&&dice[x][3]==dice[y][B]&&dice[x][4]==dice[y][A]&&dice[x][5]==dice[y][F]&&dice[x][6]==dice[y][E]) return 1;  if (dice[x][1]==dice[y][A]&&dice[x][2]==dice[y][B]&&dice[x][3]==dice[y][F]&&dice[x][4]==dice[y][E]&&dice[x][5]==dice[y][C]&&dice[x][6]==dice[y][D]) return 1;  if (dice[x][1]==dice[y][F]&&dice[x][2]==dice[y][E]&&dice[x][3]==dice[y][B]&&dice[x][4]==dice[y][A]&&dice[x][5]==dice[y][C]&&dice[x][6]==dice[y][D]) return 1;  if (dice[x][1]==dice[y][B]&&dice[x][2]==dice[y][A]&&dice[x][3]==dice[y][E]&&dice[x][4]==dice[y][F]&&dice[x][5]==dice[y][C]&&dice[x][6]==dice[y][D]) return 1;  if (dice[x][1]==dice[y][E]&&dice[x][2]==dice[y][F]&&dice[x][3]==dice[y][A]&&dice[x][4]==dice[y][B]&&dice[x][5]==dice[y][C]&&dice[x][6]==dice[y][D]) return 1;  if (dice[x][1]==dice[y][A]&&dice[x][2]==dice[y][B]&&dice[x][3]==dice[y][E]&&dice[x][4]==dice[y][F]&&dice[x][5]==dice[y][D]&&dice[x][6]==dice[y][C]) return 1;  if (dice[x][1]==dice[y][E]&&dice[x][2]==dice[y][F]&&dice[x][3]==dice[y][B]&&dice[x][4]==dice[y][A]&&dice[x][5]==dice[y][D]&&dice[x][6]==dice[y][C]) return 1;  if (dice[x][1]==dice[y][B]&&dice[x][2]==dice[y][A]&&dice[x][3]==dice[y][F]&&dice[x][4]==dice[y][E]&&dice[x][5]==dice[y][D]&&dice[x][6]==dice[y][C]) return 1;  if (dice[x][1]==dice[y][F]&&dice[x][2]==dice[y][E]&&dice[x][3]==dice[y][A]&&dice[x][4]==dice[y][B]&&dice[x][5]==dice[y][D]&&dice[x][6]==dice[y][C]) return 1;  if (dice[x][1]==dice[y][F]&&dice[x][2]==dice[y][E]&&dice[x][3]==dice[y][C]&&dice[x][4]==dice[y][D]&&dice[x][5]==dice[y][A]&&dice[x][6]==dice[y][B]) return 1;  if (dice[x][1]==dice[y][C]&&dice[x][2]==dice[y][D]&&dice[x][3]==dice[y][E]&&dice[x][4]==dice[y][F]&&dice[x][5]==dice[y][A]&&dice[x][6]==dice[y][B]) return 1;  if (dice[x][1]==dice[y][E]&&dice[x][2]==dice[y][F]&&dice[x][3]==dice[y][D]&&dice[x][4]==dice[y][C]&&dice[x][5]==dice[y][A]&&dice[x][6]==dice[y][B]) return 1;  if (dice[x][1]==dice[y][D]&&dice[x][2]==dice[y][C]&&dice[x][3]==dice[y][F]&&dice[x][4]==dice[y][E]&&dice[x][5]==dice[y][A]&&dice[x][6]==dice[y][B]) return 1;  if (dice[x][1]==dice[y][E]&&dice[x][2]==dice[y][F]&&dice[x][3]==dice[y][C]&&dice[x][4]==dice[y][D]&&dice[x][5]==dice[y][B]&&dice[x][6]==dice[y][A]) return 1;  if (dice[x][1]==dice[y][D]&&dice[x][2]==dice[y][C]&&dice[x][3]==dice[y][E]&&dice[x][4]==dice[y][F]&&dice[x][5]==dice[y][B]&&dice[x][6]==dice[y][A]) return 1;  if (dice[x][1]==dice[y][F]&&dice[x][2]==dice[y][E]&&dice[x][3]==dice[y][D]&&dice[x][4]==dice[y][C]&&dice[x][5]==dice[y][B]&&dice[x][6]==dice[y][A]) return 1;  if (dice[x][1]==dice[y][C]&&dice[x][2]==dice[y][D]&&dice[x][3]==dice[y][F]&&dice[x][4]==dice[y][E]&&dice[x][5]==dice[y][B]&&dice[x][6]==dice[y][A]) return 1;  return 0;
}signed main() {  // freopen("in", "r", stdin);
  // freopen("out", "w", stdout);
  while (~scanf("%d", &n)) {    for (int i = 1; i <= n; i++) {
      pre[i] = i;
    }    for (int i = 1; i <= n; i++) {      for (int j = 1; j <= 6; j++) {        scanf("%d", &dice[i][j]);
      }
    }    for (int i = 1; i <= n; i++) {      for (int j = i + 1; j <= n; j++) {        if (check(i, j)) unite(i, j);
      }
    }    int ret1 = 0;    for (int i = 1; i <= n; i++) {      if (i == find(i)) ret1++;
    }    printf("%d\n", ret1);    map<int, int> vis;    for (int i = 1; i <= n; i++) {
      vis[find(i)]++;
    }    vector<int> ret2;    for (const auto &x : vis) {
      ret2.emplace_back(x.second);
    }
    sort(ret2.begin(), ret2.end(), greater<int>());    for (int i = 0; i < ret2.size(); i++) {      printf("%d%c", ret2[i], " \n"[i == ret2.size() - 1]);
    }
  }  return 0;
}

贴一下枚举的图吧。。

 

 

第三题:按美味程度、能量数的顺序从小到大排序,然后枚举lunch,二分dinner的美味程度,更新答案。记得单独讨论只吃一顿或者一顿都不吃的情况。

#include <bits/stdc++.h>using namespace std;using LL = long long;using pii = pair<int, int>;const int maxn = 100100;int n, m, t;
pii lunch[maxn], dinner[maxn];int suf[maxn];signed main() {  // freopen("in", "r", stdin);
  // freopen("out", "w", stdout);
  while (~scanf("%d%d%d",&n,&m,&t)) {    for (int i = 1; i <= n; i++) {      scanf("%d%d",&lunch[i].second, &lunch[i].first);
    }    for (int i = 1; i <= m; i++) {      scanf("%d%d",&dinner[i].second, &dinner[i].first);
    }    if (t == 0) {      printf("0\n");      continue;
    }
    sort(lunch + 1, lunch + n + 1);
    sort(dinner + 1, dinner + m + 1);    int ret = INT_MAX;    for (int i = 1; i <= n; i++) {      if (lunch[i].first >= t) ret = min(ret, lunch[i].second);
    }    for (int i = 1; i <= m; i++) {      if (dinner[i].first >= t) ret = min(ret, dinner[i].second);
      suf[i] = dinner[i].second;
    }    for (int i = m - 1; i >= 1; i--) {
      suf[i] = min(suf[i + 1], suf[i]);
    }    for (int i = 1; i <= n; i++) {      if (lunch[i].first >= t) continue;      int require = t - lunch[i].first;      if (dinner[m].first < require) continue;      int lo = 1, hi = m;      while (lo <= hi) {        int mid = (lo + hi) >> 1;        if (dinner[mid].first >= require) {
          ret = min(ret, suf[mid] + lunch[i].second);
          hi = mid - 1;
        } else {
          lo = mid + 1;
        }
      }
    }    printf("%d\n", ret == INT_MAX ? -1 : ret);
  }  return 0;
}

第四题:一开始读错题了,我以为就6个'#'. 所以我写了个预处理暴力。正解插头DP

#include <bits/stdc++.h>using namespace std;using LL = long long;using pii = pair<int, int>;const LL mod = 1E9 + 9;const int dx[5] = {0, 0, 1, -1};const int dy[5] = {1, -1, 0, 0};const int maxn = 7;char s[maxn][maxn];vector<pii> pos;int n = 6, m = 6;
LL ret;vector<vector<int>> status;vector<int> tmp;void pre(int cnt, int cap) {  if (cnt == min((int)pos.size() + 1, 7)) {
    status.emplace_back(tmp);    return;
  }  for (int i = 1; i <= 6; i++) {    // if (i == cap) continue;
    tmp.emplace_back(i);
    pre(cnt + 1, i);
    tmp.pop_back();
  }
}int check(int x, int y) {  return x >= 1 && x <= 6 && y >= 1 && y <= 6;
}int ok() {  for (int i = 1; i <= 6; i++) {    for (int j = 1; j <= 6; j++) {      for (int k = 0; k < 4; k++) {        int x = i + dx[k];        int y = j + dy[k];        if (!check(x, y)) continue;        if (s[i][j] == '*') continue;        if (s[x][y] == s[i][j]) return 0;
      }
    }
  }  return 1;
} 
signed main() {  // freopen("in", "r", stdin);
  // freopen("out", "w", stdout);
  pos.clear();  for (int i = 1; i <= 6; i++) {    scanf("%s", s[i] + 1);    for (int j = 1; j <= 6; j++) {      if (s[i][j] == '#') pos.emplace_back(i, j);
    }
  }
  tmp.clear();
  status.clear();
  pre(1, -1);  for (int i = 0; i < status.size(); i++) {    for (int j = 0; j < pos.size(); j++) {      int x = pos[j].first, y = pos[j].second;
      s[x][y] = status[i][j] + '0';
    }    if (ok()) {
      ret++;      if (ret >= mod) ret %= mod;
    }    for (int j = 0; j < pos.size(); j++) {      int x = pos[j].first, y = pos[j].second;
      s[x][y] = '#';
    }
  }  printf("%lld\n", ret);  return 0;
}

没得100分,确定不来啃啃[阿里云-超全算法笔试模拟题精解合集]?

[阿里云-超全算法笔试模拟题精解合集]--70+算法题、30种大厂笔试高频知识点

image.png

​

这是一本“在线”编程的程序员面试宝典,解析之后的每个题都有其拓展链接,点击可进入模拟场进行训练,这边篇幅原因,题目列举完,但是解析只有部分,不过完整的原版文件可免费分享给需要刷题训练的伙伴

算法的思想

1.1 排序
排序算法笔试题精解-“数组变换”
排序算法笔试题精解-“打怪兽”
1.2 贪心
贪心算法笔试题精解-“最大边权和"
贪心算法笔试题精解-“最强的团队”
贪心算法笔试题精解-“Tom爱吃巧克力”
贪心算法笔试题精解-“吃奶酪”
贪心算法笔试题精解-“一的个数”
贪心算法笔试题精解-“Bob的花束”
贪心算法笔试题精解-“钱主”
贪心算法笔试题精解-“移动射击”
贪心算法笔试题精解-“相似数组”
贪心算法笔试题精解-“过吊桥”
贪心算法笔试题精解-“完美排列”
贪心算法笔试题精解-“采摘圣诞果"
贪心算法比赛题精解-“Tairitsu and Dynamic Objects"
贪心算法笔试题精解-“Codancer的炸弹引爆”
贪心算法笔试题精解-“学习小组”
贪心算法笔试题精解-“恢复字符串”
1.3 DP/动态规划
DP/动态规划算法笔试题精解-“矩阵最小路径和”
DP/动态规划算法笔试题精解-“寻找等比数列”
DP/动态规划算法笔试题精解-“字符配对”
DP/动态规划算法笔试题精解-“数组染色”
DP/动态规划算法笔试题精解-“连绵的群山”
DP/动态规划算法笔试题精解-“难住Tom 的问题”
DP/动态规划算法笔试题精解-“变化的字符”
DP/动态规划算法笔试题精解-“跳房子”
DP/动态规划算法笔试题精解-“寒假活动”
DP/动态规划算法笔试题精解-“最短路”
DP/动态规划算法笔试题精解-“codancer上楼”
DP/动态规划算法笔试题精解-“木棒拼接”
DP/动态规划算法笔试题精解-“Codancer的数组封印"
DP/动态规划算法笔试题精解-“Jerry的异或运算”
DP/动态规划算法笔试题精解-“小明的数学作业"
DP/动态规划算法笔试题精解-“奇偶数列"
1.4 剪枝
剪枝算法笔试题精解-“斐波那契字符数”
1.5 尺取法
尺取法算法笔试题精解-“超级区间”
尺取法算法笔试题精解-“调整数组”
尺取法算法笔试题精解-“最优分组”
尺取法算法笔试题精解-“破译密码”

  • 排序-题目解析

image.png

 

  • 贪心-题目解析

image.png

 

  • DP/动态规划-题目解析

    image.png

 

  • 剪枝-题目解析

  • 尺取法-题目解析

image.png

 

数据结构

2.1图
算法笔试题精解-“变换的密钥”
2.2 搜索
搜索算法笔试题精解-“2的幂次方数”
搜索算法笔试题精解-“能量半径”
搜索算法笔试题精解-“苹果收获程序”
搜索算法笔试题精解-“恐怖的辐射”
搜索算法笔试题精解-“树的拆分”
搜索算法笔试题精解-“Password”
搜索算法笔试题精解-“神奇数字在哪里”
搜索算法笔试题精解-“神奇的棋子”
2.3 树
算法笔试模精解-“全奇数组”
算法笔试模精解-“Codancer的旅行”
算法笔试模精解-“Codancer的求和”
算法笔试模精解-“找出二叉搜索树的第2大的数”
2.4 线型
线型算法笔试题精解-“最大矩形面积"
线型算法笔试题精解-“最活跃的数”
线型算法笔试题精解-“非递减序列”
线型算法笔试题精解-“Tom跳方格”
线型算法笔试题精解-“复杂的字符串”
线型算法笔试题精解-“神秘消失”

  • 图-题目解析

image.png

 

  • 搜索-题目解析

image.png

 

  • 树-题目解析

image.png

 

  • 线型-题目解析

image.png

 

计算

算法笔试模拟题精解之“最后的胜者”
算法笔试模拟题精解之“简单题?
算法笔试模拟题精解之“朋友一生一起走”
算法笔试模拟题精解之“正三角塔”
算法笔试模拟题精解之“组队难题”
算法笔试模拟题精解之“2n合体”
算法笔试模拟题精解之“平行线”
算法笔试模拟题精解之“叠叠高”
算法笔试模拟题精解之“公平”
算法笔试模拟题精解之“Tom的手工课”
算法笔试模拟题精解之“填数问题”
算法笔试模拟题精解之“Jerry的考验"
算法笔试模拟题精解之“超车”
算法笔试模拟题精解之“坏掉的时钟”
算法笔试模拟题精解之“期末考试"
算法笔试模拟题精解之“滑雪比赛”

image.png

 

image.png

 

看完阿里云出品的[算法笔试模拟题精解],再来刷刷左程云大神的[程序员代码面试指南]

image.png

第一部分:栈和队列部分(10)
1. 设计一个有getMin功能的栈
2. 由两个栈组成的队列
3. 如何仅用递归函数和栈操作逆序一个栈
4. 猫狗队列
5. 用一个栈实现另一个栈的排序
6. 用栈来求解汉诺塔问题
7. 生成窗口最大值数组
8. 构造数组的MaxTree
9. 求最大子矩阵的大小
10. 最大值减去最小值小于或等于num的子数组数量
第二部分:链表问题(20)
1. 打印两个有序链表的公共部分

2. 在单链表和双链表中删除倒数第K 个节点

3. 删除链表的中间节点和a/b 处的节点

4. 反转单向和双向链表

5. 反转部分单向链表

6. 环形单链表的约瑟夫问题
7. 判断一个链表是否为回文结构
8. 将单向链表按某值划分成左边小、中间相等、右边大的形式
9. 复制含有随机指针节点的链表
10. 两个单链表生成相加链表
11. 两个单链表相交的一系列问题
12. 将单链表的每K个节点之间逆序
13. 删除无序单链表中值重复出现的节点
14. 在单链表中删除指定值的节点
15. 将搜索二叉树转换成双向链表
16. 单链表的选择排序
17. 一种怪异的节点删除方式
18. 向有序的环形单链表中插入新节点
19. 合并两个有序的单链表
20. 按照左右半区的方式重新组合单链表
第三部分:二叉树问题(24)
1. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历
2. 打印二叉树的边界节点
3. 如何较为直观地打印二叉树
4. 二叉树的序列化和反序列化
5. 遍历二叉树的神级方法
6. 在二叉树中找到累加和为指定值的最长路径长度
7. 找到二叉树中的最大搜索二叉子树
8. 找到二叉树中符合搜索二叉树条件的最大拓扑结构
9. 二叉树的按层打印与ZigZag打印
10. 调整搜索二叉树中两个错误的节点
11. 判断t1 树是否包含t2 树全部的拓扑结构
12. 判断t1 树中是否有与t2 树拓扑结构完全相同的子树
13. 判断二叉树是否为平衡二叉树
14. 根据后序数组重建搜索二叉树
15. 判断一棵二叉树是否为搜索二叉树和完全二叉树
16. 在二叉树中找到一个节点的后继节点
17. 在二叉树中找到两个节点的最近公共祖先
18. Tarjan算法与并查集解决二叉树节点间最近公共祖先的批量查询问题
19. 二叉树节点间的最大距离问题
20. 先序、中序和后序数组两两结合重构二叉树
21. 通过先序和中序数组生成后序数组
22. 统计和生成所有不同的二叉树
23. 统计完全二叉树的节点数
第四部:分递归和动态规划(17)
1. 斐波那契系列问题的递归和动态规划
2. 矩阵的最小路径和
3. 换钱的最少货币数
4. 换钱的方法数
5. 最长递增子序列
6. 汉诺塔问题
7. 最长公共子序列问题
8. 最长公共子串问题
9. 最小编辑代价
10. 字符串的交错组成
11. 龙与地下城游戏问题
12. 数字字符串转换为字母组合的种数
13. 表达式得到期望结果的组成种数
14. 排成一条线的纸牌博弈问题
15. 跳跃游戏
16. 数组中的最长连续序列
17. N皇后问题
第五部分:字符串问题(23)
1. 判断两个字符串是否互为变形词
2. 字符串中数字子串的求和
3. 去掉字符串中连续出现k 个0 的子串
4. 判断两个字符串是否互为旋转词
5. 将整数字符串转成整数值
6. 替换字符串中连续出现的指定字符串
7. 字符串的统计字符串
8. 判断字符数组中是否所有的字符都只出现过一次
9. 在有序但含有空的数组中查找字符串
10. 字符串的调整与替换
11. 翻转字符串
12. 数组中两个字符串的最小距离
13. 添加最少字符使字符串整体都是回文字符串
14. 括号字符串的有效性和最长有效长度
15. 公式字符串求值
16. 0 左边必有1 的二进制字符串数量
17. 拼接所有字符串产生字典顺序最小的大写字符串
18. 找到字符串的最长无重复字符子串
19. 找到被指的新类型字符
20. 最小包含子串的长度
21. 回文最少分割数
22. 字符串匹配问题
23. 字典树(前缀树)的实现
第六部分:大数据和空间限制(6)
1. 认识布隆过滤器
2. 只用2 GB 内存在20 亿个整数中找到出现次数最多的数.
3. 40 亿个非负整数中找到没出现的数
4. 找到100 亿个URL 中重复的URL 以及搜索词汇的top K 问题
5. 40 亿个非负整数中找到出现两次的数和所有数的中位数
6. 一致性哈希算法的基本原理
第七部分:位运算(6)
1. 不用额外变量交换两个整数的值
2. 不用任何比较判断找出两个数中较大的数
3. 只用位运算不用算术运算实现整数的加减乘除运算
4. 整数的二进制表达中有多少个1
5. 在其他数都出现偶数次的数组中找到出现奇数次的数
6. 在其他数都出现k 次的数组中找到只出现一次的数
第八部分:数组和矩阵问题(26)
1. 转圈打印矩阵
2. 将正方形矩阵顺时针转动90 °
3. "之"字形打印矩阵
4. 找到无序数组中最小的k 个数
5. 需要排序的最短子数组长度
6. 在数组中找到出现次数大于N/K 的数
7. 在行列都排好序的矩阵中找数
8. 最长的可整合子数组的长度
9. 不重复打印排序数组中相加和为给定值的所有二元组和三元组
10. 未排序正数数组中累加和为给定值的最长子数组长度
11. 未排序数组中累加和为给定值的最长子数组系列问题
12. 未排序数组中累加和小于或等于给定值的最长子数组长度
13. 计算数组的小和
14. 自然数数组的排序
15. 奇数下标都是奇数或者偶数下标都是偶数
16. 子数组的最大累加和问题
17. 子矩阵的最大累加和问题
18. 在数组中找到一个局部最小的位置
19. 数组中子数组的最大累乘积
20. 打印N 个数组整体最大的Top K
21. 边界都是1 的最大正方形大小
22. 不包含本位置值的累乘数组
23. 数组的partition 调整
24. 求最短通路值
25. 数组中未出现的最小正整数
26. 数组排序之后相邻数的最大差值
第九部分:其他问题(34)
1. 从5 随机到7 随机及其扩展
2. 一行代码求两个数的最大公约
3. 有关阶乘的两个问题
4. 判断一个点是否在矩形内部
5. 判断一个点是否在三角形内部
6. 折纸问题
7. 蓄水池算法
8. 设计有setAll功能的哈希表
9. 最大的leftMax与rightMax之差的绝对值
10. 设计可以变更的缓存结构
11. 设计RandomPool结构
12. 调整[0 ,x)区间上的数出现的概率
13. 路径数组变为统计数组
14. 正数数组的最小不可组成和
15. 一种字符串和数字的对应关系
16. 1 到n 中1 出现的次数
17. 从N 个数中等概率打印M 个数
18. 判断一个数是否是回文数
19. 在有序旋转数组中找到最小值
20. 在有序旋转数组中找到一个数
21. 数字的英文表达和中文表达
22. 分糖果问题
23. 一种消息接收并打印的结构设计
24. 设计一个没有扩容负担的堆结构
25. 随时找到数据流的中位数
26. 在两个长度相等的排序数组中找到上中位数
27. 在两个排序数组中找到第K 小的数
28. 两个有序数组间相加和的TOP K 问题
29. 出现次数的TOP K 问题
30. Manacher算法
31. KMP 算法
32. 丢棋子问题
33. 画匠问题
34. 邮局选址问题

image.png

image.png

篇幅有限,解析加起来总共都有500多页,就不多说了,想看完整解析:阿里云出品的[算法笔试模拟题精解]+左程云大神的[程序员代码面试指南],找下小编分享便是!

算法与数据结构:<阿里云:70+算法题30种大厂笔试高频知识点><左程云-程序员代码面试指南><算法刷题LeetCode>

阿里巴巴(菜鸟) - 算法工程师(机器学习)提前批笔试面试总结 前面一直在准备出国留学申请,中间投递了华为、腾讯、阿里三家公司。幸运的是拿到了华为多媒体算法岗, 腾讯机器学习算法岗,阿里巴巴菜鸟物流算法岗。接下来将投入到论文发表、计算机名校申请中。 Attention1:本文是博主准备阿里秋招的笔记内容。 Attention2:本文只为了记录自己的经历,不适用金字塔层级的大神、大佬。 1.申请职位描述 阿里巴巴-菜鸟物流:算法工程师(机器学习) 其... 阅读详情

相关推荐

染色问题 - LintCode

描述 有一个圆形,分成n个扇形,用m种颜色给每个扇形染色,相邻扇形颜色不能相同。求方案总数。 不考虑对称性。 由于这个数可能很大,因此只需返回方案数模1e9 + 7。 1≤n≤105,1≤m≤1051≤n≤105,1≤m≤1051≤n≤10^5 ,1≤m≤10^5 ​ 样例 给定n = 2,m = 3,返回6。 解释: 一个圆划分为 2 个扇形,用 3 种颜色上色方案有“黑红...

kane的博客 3250

【ybt】【动态规划 区间 课过 例2】木板涂色

木板涂色 题目链接:YbtOJ/Luogu 解题思路 区间 DPDPDP 。 设 fl,rf_{l,r}fl,r​ 表示将区间 [l,r][l,r][l,r] 涂成目标形式的最小次数,转移方程如下: fl,r={minl<k≤r(fl,k−1+fk,r)(s[l]≠s[r])min(fl,r−1,fl+1,r)(s[l]=s[r]) f_{l,r}=\left\{ \begin{array}{l} min_{l<k\leq r}(f_{l,k-1}+f_{k,r})&(s[l]\ne

你...你不要过来啊!!! 287

【春招笔试】阿里云2025.03.20

那么她也会喜欢字符串 “ciallo” 和 “he”,因为 “ciallo” 的长度为 2 的后缀 “lo” 和 “he” 的长度为 2 的前缀 “he” 都是 “hello” 的子串。通过数学变换,将原本O(n⁴)的暴力枚举优化为O(n)的线性算法,体现了数学建模在算法设计中的重要性。这个算法高效地利用了问题的特性,避免了暴力检查所有可能的前缀和后缀,使得在给定的数据范围内能够高效解决问题。在一维空间中,他设计了一个由。开始,是否存在一个非空的连续子序列,使得执行该子序列后的净位移为0。

春秋招笔试突围 722

【动态规划】房屋染色问题

题目描述 这里有n个房子在一列直线上,现在我们需要给房屋染色,分别有红色蓝色和绿色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小,返回最小的费用。 费用通过一个nx3 的矩阵给出,比如cost[0][0]表示房屋0染红色的费用,cost[1][2]表示房屋1染绿色的费用,依此类推。找到油漆所有房子的最低成本。 样例 样例1: 输入: [[14,2,11],[11,14,5],[14,3,10]] 输出: 10 解释: 第一个屋子染蓝色,第二个染绿色,第三

m0_50884973的博客 828

【阿里笔试题汇总】[全网首发]2024-05-07-阿里文娱春招笔试题-三语言题解(CPP/Python/Java)

K小姐刚开始学习编程时,经常会遇到时间超限的问题。她希望你能帮忙判断她的程序是否会超时。已知计算机每秒可以执行 10810^8108 次计算。如果程序的计算次数大于等于 10810^8108,则判定为超时,输出 ;否则,请求出最内层循环中代码的计算次数。第一行包含一个正整数 NNN(1≤N≤1001 \leq N \leq 1001≤N≤100),表示嵌套 循环的层数。第二行包含 NNN 个空格分隔的正整数 MiM_iMi​(1≤Mi≤100001 \leq M_i \leq 100001≤Mi​≤100

春秋招笔试突围 1404

300个fpga练手项目推荐

• 按键设置BPM,LED和蜂鸣器同步打拍(支持4/4、3/4拍)• 例:先实现DDR3控制器(基础),再构建视频处理流水线(集成)◦ 驱动小型e-Paper显示日期/时间(SPI接口,静态刷新)◦ 音频输入经FFT后,用LED柱状显示频率能量(8频段简化)◦ 通过HC-05模块接收手机指令,控制电机方向(前进/后退)• 随机点亮LED,用按钮响应,数码管显示反应时间(毫秒级)• 8个LED旋转闪烁,按钮停止后显示中奖编号(带减速动画)• 用4方向按键输入手势(如→→←↑),正确后点亮绿色LED。

qq_62784677的博客 7647

墙壁涂色问题--动态规划

问题描述 给一个环形的墙壁涂颜色,颜色一共有 k 种,墙壁被竖直地划分成 n 个部分,相邻的部分颜色不能相同。请你写程序计算出一共有多少种给墙壁上色的方案? 例如,当 n=5,k=3​ 时,下面是一种合法的涂色方案 而由于墙壁是环形的,所以下面就是一种非法的方案 输入 输入两个数字 n,k(1≤n≤103,2≤k≤10),分别代表墙壁数量和颜色种类。 输出 对于每个询问,输出一行整数,合法的墙壁涂色方案数。 样例输入1 5 3 样例输出1 30 数据规模与约定 时间限制:5 s 内存限制:256 M

果果冻冻的博客 1700

MIPI转LVDS芯片调试实战:从Kernel到UEFI的完整点亮流程

本文详细解析了MIPI转LVDS芯片调试的全流程,从Kernel驱动开发到UEFI早期初始化,涵盖I2C通信、电源时序控制等核心挑战。通过LT9211芯片实战案例,提供设备树配置、电源时序优化及显示异常排查等实用技巧,助力工程师高效完成屏幕调试工作。

weixin_30314813的博客 452

三面阿里,被Java面试官虐哭!现场还原真实的“被虐”场景

实际上,作为一名程序员,想要中年后不被市场淘汰,那么在年轻时,就一定要多思考多交流,但是身边的同事都是跟自己处于同级水平的,领导又不可能跟自己交流太多的技术,那么怎么通过什么的方式来交流和思考,从而达到提升自己的效果呢?目前,为了准备春招,做了一些计划和练习,特分享一下,希望能够给大家一些参考。框架篇:Spring,Spring Cloud,Netty网络编程,ZooKeeper,Kafka,Hadoop,HBase,Cassandra,ElasticSearch,Spark,Flink 原理及应用!

代码界的扛把子 373

3.1 5分钟搞定!Claude Code接入国产大模型完整教程(附代码)

摘要 本文提供了一份5分钟快速为Claude Code接入国产大模型的完整教程。首先介绍了系统环境要求(Windows/macOS/Linux、Node.js 18+、Python 3.8+),然后详细说明了三种安装Claude Code的方式(npm/yarn/pnpm)。重点讲解了两种国产大模型接入方案:通义千问(推荐)和文心一言,包括获取API密钥、安装SDK、创建MCP服务器、配置Claude Code等步骤。文中提供了详细的代码示例和配置文件模板,确保开发者能快速完成国产大模型的接入,降低使用成本

yonggeit的博客 7926

2024年ERP管理系统职业技能大赛软件测试赛项-测试报告

【说明本次测试的最终测试结果总结、测试过程中遇到的重要问题以及如何解决、被测系统的质量结论、个人的收获以及团队的得失等】【说明编写本测试报告的目的和实际读者】【说明本次测试实际人员安排及主要职责】【说明本次测试使用的测试用例设计方法】【说明本次测试使用的测试方法】【针对本次测试进行Bug汇总】【针对本次测试进行用例汇总】【说明本项目的背景情况】【说明本次测试的实际。

Code is fun. 791

Java解决动态规划问题之栅栏染色

1、题目描述(Lintcode)       我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证不存在超过2个相邻的柱子颜色相同,求有多少种染色方案。       题目链接:栅栏染色 2、题目解析       首先设置一个dp数组用于记录给第i个柱子染色的时候一共有多少种染色方案,即dp[i]。我们接着寻找

记录个人在工作学习中的思考和遇到的问题。 763

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 127

【春招笔试】2024-04-28-阿里云-三语言题解

本人java选手,今天收到了华子云深圳的实习offer,目前在上海一家初创公司做AIGC的开发实习,没有比赛,没有实习,没有项目,导师完全push论文,不让弄别的,目。问问大佬,学完了前端三件套,vue全家桶,node.js,uniapp,做了个全栈的博客项目够找实习。在官网投的科技岗,说是后端,结果发的面试说是星令营的,面试问了两个项目的问题,然后给我发的邮件也没说。本2硕9,目前研一,控制专业。实习对找工作重要吗,双非本科机械专业,想考公务员,实习的话没那么多精力拼刺公务员,不实习的话害怕到时。

2301_78234743的博客 1028

给跨代引用记一本账:Java GC 的分配路径、卡表写屏障与收集器版图快速回顾

本文把 Java GC 的零散名词串成一条推理链路:从 TLAB 指针碰撞分配、逃逸分析,到 Eden、Survivor 与晋升的四条路,重点拆解卡表与写屏障如何为老年代指向新生代的引用记账,及 Minor GC 如何只扫脏卡。基于 JDK 8 实测:分散写使 Young GC 停顿涨 10~15 倍,条件卡标记消除卡表伪共享,计数循环让 System.gc 等待 2.7 秒,Survivor 过小使晋升量增加约 400 倍。文末梳理 JDK 8 到 27 的收集器演进、选型路径与排查顺序。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 17万+

阿里云笔试题整理

昨天参加了阿里云的笔试,笔试是单独给我发了一个链接,不像是统一的笔试,两个小时做两个题也是我没有想到的,最后还是没有做完。所以就想着来整理以下这两个题目,下面就开始了。

hubiao1999的博客 2103

CAN(2)-GD32

GD32中CAN的特征。

小柚子的博客 554

小球染色问题总结-DP和递归

问题描述 有一串长度为N的小球排成一排,要求将他们全部染色,共有k种颜色,但是不能出现连续三个及以上相同颜色的珠子。输入长度N和颜色种类K,求所有染色的方法总数。 输入示例:2,3 输出示例:9 输入示例:3,2 输出示例:6 问题分析: 排列问题暴力破解的时间复杂度为O(k^n)。 可以考虑DP,因为第i个小球的颜色只受i-1和i-2小球颜色的影响。 用dp[i-2]表示当染色到i...

i000zheng的博客 3261

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

alibaba——研发/算法笔试题2

3、进程阻塞的原因不包括() A、时间片切换 B、等待I/O C、进程sleep D、等待解锁 答:linux基础知识。 解析: 知识补充:

成长Bar的博客专栏 1121

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

动态规划----颜料涂墙问题

问题描述: 有一面长度为n(n 0代表红色,1代表绿色,2代表蓝色 初始值F(1, 0) = F(1, 1) = F(1, 2) = 1; 状态转移方程: for(n>1) F(n, 0) = F(n-1, 0)+F(n-1, 1)+F(n-1, 2) F(n, 1) = F(n-1, 1)+F(n-1, 2) F(n, 0) = F(n-1,

烽火前秦路 2916

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【java】179. 最大数---实现数组拼接最大数,优化比较!!!

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1: 输入:nums = [10,2] 输出:“210” 示例 2: 输入:nums = [3,30,34,5,9] 输出:“9534330” 示例 3: 输入:nums = [1] 输出:“1” 示例 4: 输入:nums = [10] 输出:“10” 提示: 1 <= nums.length <= 100 0 <= nums[

惠菁 1590

阿里程序员面试难度Python11道基础练习题,年薪60W必备

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费。

2401_83621784的博客 1200

栅栏染色-动态规划

这道题应该背下来,是经典的DP问题。 当n==1时,有k种方案; 当n==2时,有k*k种方案; 当n==3时,分两种情况: 1:后两根颜色相同(有num[1] * (k-1)=k*(k-1)种方案) 2:后两根颜色不同(有num[2]*(k-1) = k*k*(k-1)种方案 ) 以后num[i]表示前i根柱子的方案数,num[i-1],num[i-2]表示前i-1 和 i-2种方案

u014257954的专栏 909
上一篇: 微服务架构秘籍:SpringCloud+SpringCloud Alibaba,全网疯传!
下一篇: Aliyun四面真可怕,狂问基础+项目+源码+高阶,无爱了!
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值