zoukankan      html  css  js  c++  java
  • 字节跳动笔试练习题

    链接:https://www.nowcoder.com/questionTerminal/944e5ca0ea88471fbfa73061ebe95728?orderByHotValue=1&mutiTagIds=665&page=1&onlyReference=false
    来源:牛客网

    Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N(0<N≤1024)N (0 < N le 1024)N(0<N1024)的商品,请问最少他会收到多少硬币?
    w=int(input())
    n=1024-w
    count=0
    if int(n/64)>0:
            count=count+int(n/64)
            n=n%64
    if int(n/16)>0:
            count=count+int(n/16)
            n=n%16 
    if int(n/4)>0:    
            count=count+int(n/4)
            n=n%4
    count=count+n
    print(count)     

     链接:https://www.nowcoder.com/questionTerminal/5afcf93c419a4aa793e9b325d01957e2?orderByHotValue=1&mutiTagIds=665&page=1&onlyReference=false
    来源:牛客网

    小明是一名算法工程师,同时也是一名铲屎官。某天,他突发奇想,想从猫咪的视频里挖掘一些猫咪的运动信息。为了提取运动信息,他需要从视频的每一帧提取“猫咪特征”。一个猫咪特征是一个两维的vector<x, y>。如果x_1=x_2 and y_1=y_2,那么这俩是同一个特征。
           因此,如果喵咪特征连续一致,可以认为喵咪在运动。也就是说,如果特征<a, b>在持续帧里出现,那么它将构成特征运动。比如,特征<a, b>在第2/3/4/7/8帧出现,那么该特征将形成两个特征运动2-3-4 和7-8。
    现在,给定每一帧的特征,特征的数量可能不一样。小明期望能找到最长的特征运动。
    n=input()
    m=int(input())
    dict1={}
    max1={}
    max2={}
    for j in range(0,m):
        xy=[]
        temp=[]
        v1=[int(x) for x in  input().strip().split()]
        for i in range(0,v1[0]):
            x1=str(v1[2*i+1])
            y1=str(v1[2*i+2])
            x1y1=x1+"_"+y1
            if x1y1 in max1.keys():#如果已经保存该特征值
                 max1[x1y1]=max1.get(x1y1)+1
            else: 
                max1[x1y1]=1
                if x1y1 not in max2:
                    max2[x1y1]=1
            xy.append(x1y1)
        if j!=0:
            for k in max1.keys():
                if k not in xy:
                    if max1.get(k)>max2.get(k):
                        max2[k]=max1.get(k)
                    temp.append(k)
            for k in temp:
                max1.pop(k)
    for k in max1.keys():
        if max1.get(k)>max2.get(k):
            max2[k]=max1.get(k)
    max3=[]
    for c in max2.keys():
       max3.append(max2.get(c))
       #print(c,",",max2.get(c))
    print(max(max3))

    为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内)

    如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。 

    n=int(input())
    point={}
    max1={}
    for i in range(0,n):
        v1=[int(x) for x in input().split()]
        point[v1[0]]=v1[1]
    for k in point.keys():
        iss=True
        for h in point.keys():
            if h>k and point.get(h)>point.get(k):
                iss=False
        if iss==True:
            max1[k]=point.get(k)
    keyy=[]
    for d in max1.keys():
        keyy.append(d)
    keyy=sorted(keyy)
    for dd in keyy:
        print(dd,max1.get(dd))
        
            
       

    给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:

    区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列  [6 2 1]则根据上述公式, 可得到所有可以选定各个区间的计算值:

     

    [6] = 6 * 6 = 36;

    [2] = 2 * 2 = 4;

    [1] = 1 * 1 = 1;

    [6,2] = 2 * 8 = 16;

    [2,1] = 1 * 3 = 3;

    [6, 2, 1] = 1 * 9 = 9;

     

    从上述计算可见选定区间 [6] ,计算值为 36, 则程序输出为 36。

    区间内的所有数字都在[0, 100]的范围内; 

    n=int(input())
    v1=[int(x) for x in input().split()]
    result=[]
    for i in range(0,n):
        min1=0
        sum1=0
        for  j in range(i,n):
            min1=min(v1[i:j+1])
            sum1=sum(v1[i:j+1])
            result.append(min1*sum1)
    print(max(result))

     

    package test;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class test {
    
        public static void main(String[] args) {
            Scanner scanner=new Scanner(System.in);
            int n=scanner.nextInt();
            int[] v2=new int[n];
            for(int i=0;i<n;i++) {
                v2[i]=Integer.valueOf(scanner.next());
            }
            List<Integer> result=new ArrayList<Integer>();
            for(int i=0;i<n;i++) {
                for(int j=i;j<n;j++) {
                    result.add(getmin(v2,i,j)*getsum(v2,i,j));
                }
            }
            System.out.print(getmax(result));
            
    
        }
        
        public static int getmin(int[] n,int start,int end) {
            int min1=n[start];
            for(int i=start;i<end+1;i++) {
                if(n[i]<min1) {
                    min1=n[i];
                }
            }
            return min1;
            
        }
        public static int getmax(List<Integer> n) {
            int min1=n.get(0);
            for(int i:n) {
                if(i>min1) {
                    min1=i;
                }
            }
            return min1;
            
        }
        public static int getsum(int[] n,int start,int end) {
            int sum=0;
            for(int i=start;i<end+1;i++) {
                sum=sum+n[i];
            }
            return sum;
            
        }
    
    }



  • 相关阅读:
    Python补充06 Python之道
    java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)
    java io系列01之 "目录"
    字符编码(ASCII,Unicode和UTF-8) 和 大小端
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(7) TimeZone
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(6) Locale
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(4) DateFormat
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(3) Date
    Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口
  • 原文地址:https://www.cnblogs.com/wl2017/p/11398999.html
Copyright © 2011-2022 走看看