######最近因为找工作,所以在牛客网上刷了一些题,想在博客上记录下来自己的想法~

######写的不好还请大家多指教。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

1. [二维数组中的查找] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

 1 #-*- coding:utf-8 -*-
 2 #Author: Bing Xu
 3 
 4 def Find(target, array):
 5     if (len(array) - 1 == 0) and (len(array[0]) == 0):  # 数组为空直接返回false
 6         return False
 7     for i in range(len(array)):    # 开始遍历数组
 8         if target <= array[i][-1]:  # 如果target小于等于这一行的最后一个元素,那么target可能在这一行中
 9             if target < array[i][0]:    # 如果target小于这一行的第一个元素,返回false
10                 return False
11             for j in range(len(array[i])):  # 遍历target可能存在的这一行
12                 if array[i][j] == target:
13                     return True
14     return False   # 经过了所有的遍历还是没有找到,则说明不在此数组中

 

2.[旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

 1 #-*- coding:utf-8 -*-
 2 #Author: Bing Xu
 3 
 4 def Find_min(list):
 5     if len(list) == 0:  # 先确保是非空列表
 6         return 0
 7     for i in range(len(list)):  
 8         if list[i]-list[-i-1] < 0:  # 用第i个元素减去倒数第i个元素,如果答案小于0,那么可能是:(1)未旋转部分最大值[i]作了被减数,
 9                                     # 那么倒数第i-1个数为min(2)旋转部分最小值[i]作了减数,
10             if list[i] < list[-(i-1)-1]:    # 这时只要判断这两个数那个小哪个就是min
11                 return list[i]
12             else:
13                 return list[-(i-1)-1]

 

3.[从尾到头打印链表输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
 
class Solution:
    # 返回从尾部到头部的列表值序列,例如[1,2,3]
    def printListFromTailToHead(self, listNode):
        list = []
        while listNode:    # 遍历列表
            list.insert(0,listNode.val)    # 用insert实现倒叙
            listNode = listNode.next
        return list

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄