京东移动端笔试(8.12)

1、不动点

数组中元素个数和元素值相等的元素,如[1,2,2]中1、2都是不动点。求不动点数目。

哈希表即可。

2、回文字符串

对一个字符串(全是小写字母)你可以做:

  1. 将字符串的首字母移动到该字符串末尾
  2. 随意修改一个字母变为任意小写字母

每次操作都可以任选上述两种之一,求将一个字符串变成回文字符串的最小操作数。

假设操作1的次数为i,则字符串变成str[i+1]str[i+2]...str[0]str[1]..str[i],这时只需统计该字符串中对应不相等的字符数即可知道操作2的数量,操作1和操作2相加即得到操作数。遍历i,去最小值即可。

int foo(string str){
  auto fun = [&](int x){
	int ans = x;
	int i = 0, j = 2*x;
	while (i <= j)
	  ans += str[i++] != str[j--];
	i = 2*x + 1, j = (int)str.size() - 1;
	while (i <= j)
	  ans += str[i++] != str[j--];
	return ans;
  };
  int ans = INT_MAX;
  for (int i = 0; 2*i < str.size(); i++){
	ans = min(ans, fun(i));
  }
  return ans;
}

3、统计正方形数

一个n*m的棋盘,'X'表示有棋子,'.'表示没有棋子,统计四个棋子:(x1,y1),(x2,y2),(x3,y3),(x4,y4)之间围成的形状是正方形的数目。只要有一颗棋子坐标不同,则是不同的组合。

根据数学知识若知道正方形的两个点,则可以确定另外两个点,已知A(x1,y1),B(x2,y2),不妨正方形由假设AB顺时针旋转得到,则可以知道:

x3 = x1 - (y1 - y2), y3 = y1 + (x1 - x2), x4 = x2 - (y1 - y2), y4 = y2 + (x1 - x2)。

这是即可遍历两个点,利用哈希表去判断另外两个点是否存在,这里会重复计数所以最后结果要除以2。

int main(void){
	int n, m;
  	cin >> n >> m;
  	getchar();
  	char tmp;
  	vector<points<int, int>> points;
  	set<pair<int, int>> st;
  	for (int i = 0; i < n; i++){
	  for (int j = 0; j < m; j++){
		cin >> tmp;
		if (tmp == 'X'){
		  st.insert({i, j});
		  points.emplace_back(i, j);
		}
	  }
	  getchar()
	}
  	int ans = 0;
  	for (int i = 0; i < points.size(); i++){
	  for (int j = i+1; j < points.size(); j++){
		int x1 = points[i].first, x2 = points[j].first;
		int y1 = points[i].second, y2 = points[j].second;
		ans += st.count({x1-(y1-y2), y1+(x1-x2)}) && st.count({x2-(y1-y2), y2+(x1-x2)});
	  }
	}
  	cout << ans/2 << endl;
  	return 0;
}

全部评论
第三题 我也是这样但只过了63%是为啥啊佬?
点赞 回复 分享
发布于 2023-08-13 14:10 广东
京东这移动端jd上没写android和Java,但笔试却单独考这两个,感觉报错岗位了...
点赞 回复 分享
发布于 2023-08-12 21:42 安徽

相关推荐

此次两位面试官:技术面试官+hrpart1:面试官自我介绍+业务讲解part2:八股数据结构:1.你常用语言中有哪些数据结构?2.有没有遇到哈希表相关?底层哈希实现是基于什么原理解决哈希冲突的?网络:1.讲一下OSI七层模型;2.什么情况是http连接正常但是https访问异常的情况?原因是什么?两者的区别是什么?操作系统:1.进程和线程的区别2.什么情况下有死锁,怎么避免,具体的做法part3:手撕:字符串中第一个不重复的字母part4:拷打实习经历1.实习过程中做的相对来说复杂度最高的工作;2.实习业务的测试流程,你的工作内容,主要讲与ai提效相关的项目深挖;ps:技术面试官说总合一二面表现基础挺扎实;hrbp:1.家是哪里的?对base地有什么看法?刚刚技术面说你技术功底也还可以,为什么考虑测开而不是开发,是因为简单吗?2.作为测开方向,有了解过工作过程涉及的研发组的代码实现和本身质量组框架的源码吗?你认为你作为测开有什么优势?2.本硕求学经历;为什么没考上一志愿?自己分析主要问题在哪?本硕期间成绩排名合获奖情况,为啥本科学业成绩不如硕士;3.论文,比赛,项目,各负责哪些内容?工作中有无与上下级跨部门沟通的经历?怎么解决的?4.手上有哪些offer?百度是否转正?有转正的情况下为什么考虑京东?反问:1.面试环节安排,还差一个线下面;2.约面的时间,多久出结果;3.是否要求提前实习+转正?整体面试体验非常好,希望能和东哥做兄弟;面完第三天约三面
查看14道真题和解析
点赞 评论 收藏
分享
评论
2
26
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务