58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)

1. 数组去重

题目描述

/**
 * 有序数组去重
 * 输出最终的数字个数
 * 输入:1,2,2
 * 输出:2
 * @author Turing
 *
 */

代码

import java.util.*;
public class E {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] str = sc.nextLine().split(",");
        int len = str.length;
        int [] array = new int[len];
        for (int i = 0; i < len; i++) {
            array[i] = Integer.valueOf(str[i]);
        }
        int index = 1;
        for (int i = 0; i < len-1; i++) {
            if(array[i]!=array[i+1]){
                array[index] = array[i+1];
                index++;
            }
        }
        System.out.println(index);
    }
}

2. 分饼干(分糖果)

题目描述

/**
 * 分糖果问题类似
 * 分饼干问题,每个孩子至少一个饼干,
 * 如果两个孩子坐一起,评分高的孩子必须得到更多的饼干(左右都比较)
 * 输出老师购买饼干总数的最小值
 * 输入:
    6
    3
    6
    3
    5
    6
    2
 * 输出:
    10
 * 说明:第一个数表示孩子数为6;1+2+1+2+3+1=10
 */

代码

import java.util.*;
public class E4 {
    public static int m;
    public static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        int[] score = new int[n];
        int[] count = new int[n];
        for (int i = 0; i < n; i++) {
            score[i] = sc.nextInt();

        }
        Arrays.fill(count, 1);
        for(int i=1; i<n; i++){
            if (score[i]>score[i-1]) {
                count[i]=count[i-1]+1;
             }
        }
        for(int i=n-2; i>=0; i--){
           if (score[i]>score[i+1] && count[i]<=count[i+1]) {
               count[i]=Math.max(count[i], count[i+1]+1);
           }
        }
        int sum = 0;

        for (int i = 0; i < count.length; i++) {
            sum += count[i];
        }
        System.out.println(sum);

    }
}

3. 最小路径和(leetcode64)

题目描述

/**
 * 有一个地图,围棋棋盘,两点之间有行走距离起点为左上角,终点为右下角在地图上,
 * 每次行走只能沿线移动到移动的临近的点
 * 并累加路径计算一个人从地图的起点走到终点的最小路径为多少?
 * 输入:
 * m*n地图表示如下:
 * 3
 * 3
 * 1 3 4
 * 2 1 2
 * 4 3 1
 * 其中 m=3,n=3表示3*3矩阵
 * 行走路径为: 下》右》右》下
 * 路径总长:1+2+1+2+1=7
 *
 * @author Turing
 *
 */

代码


import java.util.*;
public class E4 {
    public static int m;
    public static int n;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        m = sc.nextInt();
        n = sc.nextInt();
        int [][] grid = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                grid[i][j] = sc.nextInt();
            }
        }
        System.out.println(minpath(grid, 0, 0));
    }
    public static int minpath(int[][]grid, int i,int j){
        if(i==m||j==n){
            return Integer.MAX_VALUE;
        }
        if(i==m-1&&j==n-1){
            return grid[i][j];
        }
        return grid[i][j]+Math.min(minpath(grid, i+1, j), minpath(grid, i, j+1));
    }
}

原文地址:https://www.cnblogs.com/haimishasha/p/11519156.html

时间: 2024-11-05 10:43:26

58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)的相关文章

58同城笔试题

<!DOCTYPE html> <html> <head> <style type="text/css"> .row{ width: 100%; height: 300px; padding:3px; } .col{ float: left; width: 100%; height: 100%; border: 1px solid #fff; box-sizing: border-box; background-color: #ccc;

网易2018校招笔试题-数组能不能满足重排列后任意相邻的元素积都是4的倍数

今天看了一下网易最新的校招笔试题: 小易有一个长度为N的正整数数列A = {A[1], A[2], A[3]..., A[N]}.牛博士给小易出了一个难题:     对数列A进行重新排列,使数列A满足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍数.     小易现在需要判断一个数列是否可以重排之后满足牛博士的要求. 代码如下: 1 import java.util.Scanner; 2 3 /** 4 * Created by jy on 2017/9/9. 5

100 道 Linux 笔试题,能拿 80 分就算大神!

本套笔试题共100题,每题1分,共100分.(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ? A. 串行口B. 硬盘 C. 虚拟终端D. 打印机 3. 下面哪个Linux命令可以一次显示一页内容? A. pause B. cat C. more D. grep 4. 

华为往年笔试题【去重和排序】【vertor二维数组,迭代器】

题目:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号.然后再把这些数从小到大排序,按照排好的顺序去找同学做调查.请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理). Input Param n               输入随机数的个数 inputArray      n个随机整数组成的

ThinkPHP仿58同城一站多城市路由配置技巧及二级域名部署技巧

ThinkPHP在PATHINFO的URL模式下,URL的格式类似于http://www.domain.com/appName/module/action 即:http://www.domain.com/分组名/模块名/方法名 或者:http://www.domain.com/模块名/方法名 然而在有些类似于58同城这样的应用中,需要分城市展示不同的页面内容,我们希望在网站域名后面紧跟一个城市目录,也即这种格式: http://www.domain.com/城市名/模块名/方法名,根据不同的城市

史上最难PHPer笔试题,40分就能月薪过万!附答案

请批判性的学习,欢迎大牛指正错误 1.有关PHP字符串的说法,不对的是:A.如果一个脚本的编码是 ISO-8859-1,则其中的字符串也会被编码为 ISO-8859-1.B.PHP的字符串在内部是字节组成的数组,用花括号访问或修改字符串对多字节字符集很不安全.C.substr().strpos().strlen().htmlentities() 处理字符串时依据的编码方式是相同的.D.一个布尔值 Boolean 的 true 被转换成 string 的 " 1 ",false 被转换成

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小。

2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方法对这个数组进行第一次排序,排序得到的结果恰好是按字典序排序,而字典序又恰好是数字从0-9的顺序,恰好符合这个要求.最后进行检验下,有的可能需要调换下顺序使得数最小. package com.cn.qunar.test; /** * @author 刘利娟 [email protected] * @

前端笔试题:拍扁多维数组、提取URL中的参数变成对象、实现string的trim()函数、判断Email地址、16进制颜色转rgb格式

(1)拍扁数组 这是一个著名互联网公司今天的前端笔试题:多维数组维数不定,如[2,4,1,[2,3,4,[1,2],5,3],3,8]拍扁为[2,4,1,2,3,4,1,2,5,3,3,8].维数不定,应该要用递归: 答案: function flatten(arr){ var arrLength=arr.length; for(var i=0;i<arrLength;i++){ if(arr[i].constructor==Array){ arr.splice(i,1,flatten(arr[

【笔试题-腾讯】给定一个数组a[N],我们希望构造数组b[N]

腾讯2012实习生笔试题(加分题): 给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i].在构造过程: a)不允许使用除法: b)要求O(1)空间复杂度和O(n)时间复杂度: c)除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量.对空间和全局静态变量等): 请用程序实现并简单描述. 题意应该不难理解,乍一看有点儿无从下手的感觉,思考后没有突破的话就想放弃了.看到网上其他同学也给出了解法,代码很简洁,但是理解起来不是