深信服笔试0922

两道题,第一道0.9,第二道0.8。
第一题本想骗点分,没想到过了0.9
第二道相当于LeetCode 33. 搜索旋转排序数组 原题,但只过了0.8,不知道哪里错了……
第一题:
if __name__ == '__main__':
    s = input()
    if len(s) % 2 == 0 and s == s[::-1]:
        print(True)
    else:
        print(False)
第二题:
# 特殊二分查找
if __name__ == '__main__':
    nums = input()
    nums = nums[1:]
    nums = nums[:(len(nums) - 1)]
    nums = nums.split(',')
    nums = [int(x) for x in nums]
    target = int(input())
    # nums, target = [4], 4

    if len(nums) == 1:
        if nums[0] == target:
            print(0)
        else:
            print(-1)
        exit()

    if len(nums) == 0:
        print(-1)
        exit()

    is_found = False
    start, end = 0, len(nums) - 1
    while start < end:
        if nums[start] == target:
            print(start)
            is_found = True
            break
        if nums[end] == target:
            print(end)
            is_found = True
            break

        mid = (start + end) // 2
        if nums[mid] == target:
            print(mid)
            is_found = True
            break

        if nums[mid] > nums[start]:# 前半段有序
            if nums[mid] > target and target > nums[start]:# 在左半部分找
                end = mid - 1
            else:# 在右半部分找
                start = mid + 1
        if nums[mid] < nums[start]:# 前半段无序,后半段有序
            if nums[end] > target and target > nums[mid]:# 在右半部分找
                start = mid + 1
            else:# 在左半部分找
                end = mid - 1

    if not is_found:
        print(-1)



#深信服##笔试#
全部评论
老哥约面了嘛
点赞 回复 分享
发布于 2022-09-24 09:19 湖北
什么岗位还要手撕代码。
点赞 回复 分享
发布于 2022-09-27 17:24 四川

相关推荐

神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
评论
1
7
分享

创作者周榜

更多
牛客网
牛客企业服务