8.27 京东笔试

京东集团,前端开发卷,三道编程题,比较容易,很快就A了。
第一题:输入俩数 n, k ,然后是一个长度为 n 的字符串。将前 k 个字母变成大写,后 n - k 个字母变成小写
入门题,不需要过多解释。只能说python的API真的很强大
n, k = [int(x) for x in input().split()]
s = input()
print(s[:k].upper() + s[k:].lower())
第二题:输入正整数 n。输出一个正方形矩阵,要求包含的数为 1 ~ n^2,且相邻的数和为奇数(满足要求即可,答案不唯一)
如果n为奇数,直接傻瓜式输出(从左上角,依次写1, 2, ..., n^2,写满换行)即可。
如果n为偶数,则在傻瓜式输出的基础上,奇数行向右移动一格即可。比如 4*4 的矩阵,就这样子输出
 1   2   3   4
 8   5   6   7       //  先输出最大的数,然后按顺序输出 n-1 个数字
 9  10  11 12
16 13 14 15
n = int(input())
for i in range(n):
    if not n & 1 and i & 1:     # 如果 n 为偶数,则第奇数行先输出最大数
        print(str([i*n+n] + list(range(i*n+1, i*n+n)))[1:-1].replace(',',''))
    else:
        print(str(list(range(i*n+1, i*n+n+1)))[1:-1].replace(',',''))
第三题:【长城数组】要求数组内每个数两边的数都相等,且和它本身不相等。输入 n ,和一个长度为 n 的任意数组。你需要修改其中的数,使得它变为“长城数组”。
输出最少需要修改几个数
思路:“长城数组”其实就是奇数位置(第1,3,5,...个)均相等、偶数位置均相等,且不全相等的数组。因此需要分别记下来原数组中奇数位、偶数位上每个数字出现的次数,最终我们留下出现最多的数,其他都替换成这个数。但是,有一种特殊情况,那就是这两个数相同,此时只能让奇数位或者偶数位“退而求其次”,即替换成出现第二多的数。所以需要对比一下,奇数位和偶数位换哪个需要的额外次数更小。
from collections import defaultdict
n = int(input())
nums = [int(x) for x in input().split()]
odd = defaultdict(int)     # 记录奇数位置的数字频率
even = defaultdict(int)    # 记录偶数位置的数字频率
for i in range(n):
    if i & 1:
        odd[nums[i]] += 1
    else:
        even[nums[i]] += 1
a = max(odd, key=lambda x: odd[x])    # 奇数位出现最多的数
b = max(even, key=lambda x: even[x])  # 偶数位出现最多的数
if a != b:
    print(n - odd[a] - even[b])
else:           # 因为“长城数组”不能全部相同,因此需要看第二多的数的频率
    t1, t2 = odd[a], even[b]
    odd[a] = even[b] = 0
    a = max(odd, key=lambda x: odd[x])  # 奇数位出现第二多的数
    b = max(even, key=lambda x: even[x]) # 偶数位出现第二多的数
    if t1 - odd[a] > t2 - even[b]:   # 判断奇数位还是偶数位采用次高频率
        print(n - t1 - even[b])
    else:
        print(n - t2 - odd[a])
帅哥美女路过点个赞吧(~v~)


#京东笔试##京东#
全部评论
你第二题通过了吗?我和你想法一样,但是通过率0
1 回复 分享
发布于 2022-08-27 21:06 陕西
算法岗前两题是正方形和长城数组,第三题是长度为n的字符串,其中包含两个“red”字串的种类有多少个,结果对10e9+7取模
点赞 回复 分享
发布于 2022-08-27 21:09 北京
第三题ac了么,我怎么感觉有点问题,比如最大值有2个
点赞 回复 分享
发布于 2022-08-28 08:41 河北
java,最后dp a了,长城92%,晕了
点赞 回复 分享
发布于 2022-08-27 21:03 福建
大佬
1 回复 分享
发布于 2022-08-27 21:07 河南
简单的仿佛不想招人
点赞 回复 分享
发布于 2022-08-28 08:48 新加坡
大佬
点赞 回复 分享
发布于 2022-08-27 22:18 江苏
第二题我是直接如果n为奇数,就直接按顺序排列下来,如果为偶数,在排列的时候,第偶数行逆序排列
点赞 回复 分享
发布于 2022-08-27 21:45 广东
卧槽 第二题怎么想到的 我真不会直接暴力 拿了30...
点赞 回复 分享
发布于 2022-08-27 21:30 广东
大佬
点赞 回复 分享
发布于 2022-08-27 21:05 湖南

相关推荐

头像
10-13 18:10
已编辑
东南大学 C++
。收拾收拾心情下一家吧————————————————10.12更新上面不知道怎么的,每次在手机上编辑都会只有最后一行才会显示。原本不想写凉经的,太伤感情了,但过了一天想了想,凉经的拿起来好好整理,就像象棋一样,你进步最快的时候不是你赢棋的时候,而是在输棋的时候。那废话不多说,就做个复盘吧。一面:1,经典自我介绍2,项目盘问,没啥好说的,感觉问的不是很多3,八股问的比较奇怪,他会深挖性地问一些,比如,我知道MMU,那你知不知道QMMU(记得是这个,总之就是MMU前面加一个字母)4,知不知道slab内存分配器->这个我清楚5,知不知道排序算法,排序算法一般怎么用6,写一道力扣的,最长回文子串反问:1,工作内容2,工作强度3,关于友商的问题->后面这个问题问HR去了,和中兴有关,数通这个行业和友商相关的不要提,这个行业和别的行业不同,别的行业干同一行的都是竞争关系,数通这个行业的不同企业的关系比较微妙。特别细节的问题我确实不知道,但一面没挂我。接下来是我被挂的二面,先说说我挂在哪里,技术性问题我应该没啥问题,主要是一些解决问题思路上的回答,一方面是这方面我准备的不多,另一方面是这个面试写的是“专业面试二面”,但是感觉问的问题都是一些主管面/综合面才会问的问题,就是不问技术问方法论。我以前形成的思维定式就是专业面会就是会,不会就直说不会,但事实上如果问到方法论性质的问题的话得扯一下皮,不能按照上面这个模式。刚到位置上就看到面试官叹了一口气,有一些不详的预感。我是下午1点45左右面的。1,经典自我介绍2,你是怎么完成这个项目的,分成几个步骤。我大致说了一下。你有没有觉得你的步骤里面缺了一些什么,(这里已经在引导我往他想的那个方向走了),比如你一个人的能力永远是不够的,,,我们平时会有一些组内的会议来沟通我们的所思所想。。。。3,你在项目中遇到的最困难的地方在什么方面4,说一下你知道的TCP/IP协议网络模型中的网络层有关的协议......5,接着4问,你觉得现在的socket有什么样的缺点,有什么样的优化方向?6,中间手撕了一道很简单的快慢指针的问题。大概是在链表的倒数第N个位置插入一个节点。————————————————————————————————————10.13晚更新补充一下一面说的一些奇怪的概念:1,提到了RPC2,提到了fu(第四声)拷贝,我当时说我只知道零拷贝,知道mmap,然后他说mmap是其中的一种方式,然后他问我知不知道DPDK,我说不知道,他说这个是一个高性能的拷贝方式3,MMU这个前面加了一个什么字母我这里没记,别问我了4,后面还提到了LTU,VFIO,孩子真的不会。
走呀走:华子二面可能会有场景题的,是有些开放性的问题了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
7
28
分享

创作者周榜

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