1、子集


思路:之前的最长上升子序列针对的是一个数,本题说的是一个整体Node(x和y)都有有序,求他们的最长上升子序列。固定一个求另一个。将x由小到大排序,x相同时y由大到小排序(故意放错以免将x相同情况也计算入内),y的最长上升子序列就是答案了。
因为dp方法求lis会超时,所以这题只能用二分查找了。

import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();for (int k = 0; k < m; k++) {int n = sc.nextInt();int[][] matrix = new int[n][2];for (int i = 0; i < n; i++) {matrix[i][0] = sc.nextInt();}for (int i = 0; i < n; i++) {matrix[i][1] = sc.nextInt();}//sortArrays.sort(matrix, (x, y) -> (x[0] != y[0] ? x[0] - y[0] : y[1] - x[1]));int res = fun(matrix);System.out.println(res);}}//二分查找求y的最长上升子序列public static int fun(int[][] matrix) {ArrayList<Integer> list = new ArrayList<>();for (int i = 0; i < matrix.length; i++) {int poker = matrix[i][1];int left = 0, right = list.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (list.get(mid) < poker) {left = mid + 1;} else {right = mid - 1;}}if (left == list.size()) {list.add(poker);} else {list.set(left, poker);}}return list.size();}
}

9、合法连续子段


滑动窗口,不满足条件右移,满足条件左移,左移时更新答案。

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();int k = sc.nextInt();int[] nums = new int[m];for (int i = 0; i < m; i++) {nums[i] = sc.nextInt();}HashMap<Integer, Integer> window = new HashMap<>();int left = 0, right = 0, start = 0, end = 0, valid = 0, res = 0;while (right < nums.length) {int x = nums[right];right++;int time = window.getOrDefault(x, 0);window.put(x, time + 1);if (time + 1 > valid) valid = time + 1;while (valid == k) {res += nums.length - right + 1;int y = nums[left];left++;int time2 = window.get(y);if (time2 == k) {valid--;}window.put(y, time2 - 1);}}System.out.println(res);}
}

10、两个序列

思路:设置映射规则,求最长连续上升子序列长度,返回n-lis。


import java.util.*;
public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);int m=sc.nextInt();int[] a=new int[m];int[] b=new int[m];HashMap<Integer, Integer> map=new HashMap<>();for(int j=0; j<m; j++){a[j]=sc.nextInt();map.put(a[j],j);}for(int j=0; j<m; j++){b[j]=sc.nextInt();b[j]=map.get(b[j]);}int len=fun(b);System.out.println(m-len);}public static int fun(int[] b){int res=1;int cnt=1;for(int i=1; i<b.length; i++){if(b[i-1]<b[i]) cnt++;else cnt=1;res=Math.max(res, cnt);}return res;}
}

16进制数中1的个数

package com.atguigu;import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.next();char[] chars = str.substring(2).toCharArray();int res = 0;int[] map = new int[]{0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4};for (int i = 0; i < chars.length; i++) {if (Character.isLetter(chars[i])) res += map[chars[i] - 'a' + 10];else res += map[chars[i] - '0'];}System.out.println(res);}
}

【2021】阿里巴巴编程题(4星)相关推荐

  1. 牛客网笔试真题 2021 阿里巴巴编程题(4星)题解(1-5)

    2021阿里巴巴校招笔试真题_Java工程师.C++工程师_牛客网 1.小强现在有n个物品,每个物品有x,y两种属性和.他想要从中挑出尽可能多的物品满足以下条件:对于任意两个物品 i 和 j ,满足( ...

  2. 2021阿里巴巴编程题(4星)第二题

    严正声明:转载请注明出处!!! 题目描述: 小强发现现当已知 x y = B xy = B xy=B以及 x + y = A x + y = A x+y=A时,能够很轻易地算出 x 2 + y 2 x ...

  3. 2021.09 编程题 37【Python一级题目解析】

    Python一级题目解析 1.题目 37.作图题: 绘制如下图形: (1)画一个由一个正方形和一个菱形组成的图形,其中,正方形的边长为200象素,菱形的四个顶点均在正方形四条边的中点上: (2)设置画 ...

  4. 2021.03 编程题 36【Python二级题目解析】

    Python二级题目解析 1.题目 36.设计一个停车场收费计算器(收费规则,2小时以内收费5元,超出部分每小时加收2元). 要求如下: (1)设计的程序要能输入停车时间(单位为小时,输入的小时数为整 ...

  5. 阿里巴巴(Alibaba)笔试编程题

    前言 最近在牛客网上找了点阿里巴巴笔试的编程题做,现在做个简单的总结.有的代码还在调,会慢慢发出来.有的问题可以直接暴力破解的就不放出来了,一般那种问题几层循环就解决了.不过笔试编程对时间和空间都有要 ...

  6. 2021年12月电子学会图形化四级编程题解析含答案:聪明的小猫

    [此题目来自2021年12月份电子学会] [青少年软件编程(图形化)等级考试试卷(四级)] 三.编程题(共5题,共50分) 28.聪明的小猫 有3张卡片,每张卡片上面分别写着1.2.3,从中抽出一张. ...

  7. 2021年西安交通大学915研究生考试编程题真题

    本文章仅代表个人见解,请合理使用马克思主义原理"从实际出发"辩证看待本文观点,根据自身基础,谢谢. 西安交通大学2021年研究生考试915计算机软件基础(含数据结构.程序设计)有3 ...

  8. 2021年12月电子学会图形化三级编程题解析含答案:数星星

    [此题目来自2021年12月份电子学会] [青少年软件编程(图形化)等级考试试卷(三级)] 三.编程题(共3题,共30分) 36:数星星 Goblin有个很厉害的魔法:他一挥手就可以点亮夜空中五彩斑斓 ...

  9. 2021年小米校招java编程题

    2021年小米校招java笔试编程题(AC) 有幸成为今年小米校招二十万分母的一员,小米编程题不算难基本都是板子题.之前力扣周赛也能看出来,一群大佬十几分钟AK. 这次笔试分为单选.多选和两道编程题. ...

最新文章

  1. T-SQL查询进阶--详解公用表表达式(CTE)
  2. Request: Headless HTML rendering engine
  3. 做最轻量级的数据库中间层,赶紧学起来
  4. MATLAB中rand,randi,randn函数,及rand('state',0)和rand('seed',0)产生随机种子详解
  5. cJSON_译(C中的超轻量级JSON解析器)
  6. JasperReports JSF插件用例系列
  7. 数据结构--红黑树 Red Black Tree
  8. Django环境配置
  9. 解决方法 svn checkout 更改用户名密码/断网续传
  10. VC++6.0快捷键
  11. java浮点数的精确计算_Java 浮点数计算精度丢失问题?
  12. centos7.5 挂载超过2T的大硬盘步骤
  13. dwt:动态时间规整
  14. reactive、ref、toRef、toRefs
  15. 计算机驱动安装的几个方法,不会安装驱动有福了,2个方法教你安装驱动程序,非常实用的知识...
  16. 【Web技术】1189- 你不知道的前端音视频知识
  17. UE4-(室外光照)距离场环境光遮蔽(DFAO)
  18. Java创建泛型数组的一种方法
  19. VMware虚拟机安装Ubuntu以及Linux入门基础
  20. oracle 监控内存和硬盘的排序比率_最好使它小于 .10,监控数据库性能的SQL

热门文章

  1. 行测-判断推理-图形推理-位置规律-平移
  2. linux 设置禁止ping,linux设置禁止ping
  3. Blender3.5 - 快捷键
  4. 【嵌入式开发教程8】手把手教你做平板电脑-Camera 驱动实验教程
  5. 电脑键盘失灵怎么办?
  6. 【区块链技术工坊36期】基于“GS1+区块链”的药品疫苗溯源案例解析
  7. 用CAD绘制奥迪车标
  8. TextView限制行数,点击展开显示全部
  9. ps教程(图片合成/分离,去毛边)
  10. 新IT铺路 智慧出行时代来了!