######最近因为找工作,所以在牛客网上刷了一些题,想在博客上记录下来自己的想法~
######写的不好还请大家多指教。
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小于这一行的第一个元素,返回false10 return False11 for j in range(len(array[i])): # 遍历target可能存在的这一行12 if array[i][j] == target:13 return True14 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]: # 这时只要判断这两个数那个小哪个就是min11 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