第二家,某算法公司,笔试

投的时候投的是python开发岗,做完笔试之后hr给打电话,由于实习时间问题,python岗没办法报,hr帮忙改了算法工程师岗,又做了一份算法的笔试题,不知道是不是公司不是特别大的原因,笔试题比较简单。
两次笔试都是满分,周一面试,加油!

开发岗笔试题:
四道题

1.大小写转换(很简单)
将一个字符串中的小写字母转换为大写字母。不是字母的字符不需要做改变。
	样例1:
	输入:str = "abc"
	输出:"ABC"
	
2.print输出
这个题太简单了,没找到原题,就是写了一个print(f"某句话{变量名}")
没例子

3.判断闰年
请从标准输入流(控制台)中获取一个自然数 year 表示年份。如果 year 是一个闰年,通过 print 语句输出 is a leap year 到标准输出流(控制台)。否则,通过 print 语句输出 not a leap year 到标准输出流(控制台)。
	样例3:
	当 year = 2008 时,程序执行打印出的结果为:
	is a leap year

4.判断IP
给定一个字符串数组lines, 每一个元素代表一个IP地址,找到出现频率最高的IP。
	样例4:
	输入 = ["192.168.1.1","192.118.2.1","192.168.1.1"]
	输出  "192.168.1.1"

答案:

1.
return 字符串名.upper()

2.
看题目

3.
n = int(input())
if n % 4 == 0 and n % 100 != 0 or n % 400 == 0:
    print('is a leap year')
else:
    print('not a leap year')

4.
class Solution:
    """
    @param ipLines: ip  address
    @return: return highestFrequency ip address
    """
    def highestFrequency(self, ipLines):
        # Write your code here
        ans = ipLines[0]
        #使用mapdic记录每个IP出现的次数
        mapdic = {}
        for ip in ipLines:
            if ip in mapdic:
                mapdic[ip] += 1
            else:
                mapdic[ip] = 1
        max = 0
        #遍历mapdic得到频率最高的IP
        for key in mapdic:
            if int(mapdic[key]) > max:
                max = mapdic[key]
                ans = key
        return ans

算法岗:
两道题

1.二叉树中序遍历
给出一棵二叉树,返回其中序遍历。
	样例 1:
	输入:二叉树 = {1,2,3}
	输出:[2,1,3]

2.给定一个排序的整数数组(升序)和一个要查找的整数 target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
	样例 2:
	输入:数组 = [1,4,4,5,7,7,8,9,9,10],target = 1
	输出:0

答案:

1.
"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""

class Solution:
    """
    @param root: A Tree
    @return: Inorder in ArrayList which contains node values.
    """
    def inorderTraversal(self, root):
        if root is None:
            return []
            
        # 创建一个 dummy node,右指针指向 root
        # 并放到 stack 里,此时 stack 的栈顶 dummy
        # 是 iterator 的当前位置
        dummy = TreeNode(0)
        dummy.right = root
        stack = [dummy]
            
        inorder = []
        # 每次将 iterator 挪到下一个点
        # 也就是调整 stack 使得栈顶到下一个点
        while stack:
            node = stack.pop()
            if node.right:
                node = node.right
                while node:
                    stack.append(node)
                    node = node.left
            if stack:
                inorder.append(stack[-1].val)
                
        return inorder

2.
class Solution:
    """
    @param nums: The integer array.
    @param target: Target to find.
    @return: The first position of target. Position starts from 0.
    """
    def binarySearch(self, nums, target):
        left = 0
        right = len(nums) - 1
        while left < right:
            mid = (left + right) / 2
            if nums[mid] >= target:
                right = mid
            else:
                left = mid + 1
        if nums[right] == target:
            return right
        return -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬嫱姐姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值