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;
            
        }
    
    }



  • 相关阅读:
    Encrypted Handshake Message
    RSAParameters Struct
    What if JWT is stolen?
    What's the difference between JWTs and Bearer Token?
    RSA Algorithm Example
    第18届Jolt大奖结果公布
    Ruby on rails开发从头来(windows)(三十六) 调试技巧
    Ruby on rails开发从头来(四十二) ActiveRecord基础(主键和ID)
    YouTube开放基础技术架构 让用户建自家YouTube
    Ruby on rails开发从头来(四十) ActiveRecord基础(Boolean属性)
  • 原文地址:https://www.cnblogs.com/wl2017/p/11398999.html
Copyright © 2011-2022 走看看