陌陌2019秋招研发编程题题解

交换两个整型

题目描述

输入

输入待交换的两个整型数字,以空格分隔

输出

输出交换后的两个整型数字,以空格分隔

样例输入

1 2

样例输出

2 1

代码实现

package momo;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Integer a = sc.nextInt();
        Integer b = sc.nextInt();
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println(a + " " + b);
    }
}

字符串排列

题目描述

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

输入

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

输出

对应每组数据,按字典序输出所有排列。

样例输入

abc

样例输出

abc
acb
bac
bca
cab
cba

代码实现

package momo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        ArrayList<String> list = Permutation(str);
        for (String s :
                list) {
            System.out.println(s);
        }
    }

    public static ArrayList<String> Permutation(String str) {
        ArrayList<String> list = new ArrayList<>();
        char[] ch = str.toCharArray();
        Permu(ch, 0, list);
        Collections.sort(list);
        return list;
    }

    public static void Permu(char[] str, int i, ArrayList<String> list) {
        if (str == null) {
            return;
        }
        if (i == str.length - 1) {
            if (list.contains(String.valueOf(str))) {
                return;
            }
            list.add(String.valueOf(str));
        } else {
            for (int j = i; j < str.length; j++) {
                char temp = str[j];
                str[j] = str[i];
                str[i] = temp;
                Permu(str, i + 1, list);
                temp = str[j];
                str[j] = str[i];
                str[i] = temp;
            }
        }
    }
}

最大乘积

题目描述

有长度为n的整数数组,从这 n 个整数中按照顺序选取m个,要求相邻两个整数在原数组中的位置相差不超过i,使得这 m 个整数的乘积最大,请返回最大乘积。 输入

第一行 整数n (1<n<20)
第二行 按顺序的n个整数   整数的范围在-50 到 50之间 
第三行 整数i和m  (1<i<20, 1<m<50)

输出

返回乘积

样例输入

3
7 4 7 
2 50

样例输出

49

代码实现

package momo;

import java.util.Scanner;

public class Main3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        int k = sc.nextInt();
        int m = sc.nextInt();
        long[][] maxProduct = new long[n][k];
        long[][] minProduct = new long[n][k];
        for (int i = 0; i < n; i++) {
            maxProduct[i][0] = arr[i];
            minProduct[i][0] = arr[i];
        }
        long max = Long.MIN_VALUE;
        for (int i = 0; i < n; i++) {
            for (int j = 1; j < k; j++) {
                for (int p = i - 1; p >= Math.max(i - m, 0); p--) {
                    maxProduct[i][j] = Math.max(maxProduct[i][j],
                            maxProduct[p][j - 1] * arr[i]);
                    maxProduct[i][j] = Math.max(maxProduct[i][j],
                            minProduct[p][j - 1] * arr[i]);
                    minProduct[i][j] = Math.min(minProduct[i][j],
                            minProduct[p][j - 1] * arr[i]);
                    minProduct[i][j] = Math.min(minProduct[i][j],
                            maxProduct[p][j - 1] * arr[i]);
                }
            }
            max = Math.max(max, maxProduct[i][k - 1]);
        }
        System.out.println(max);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Bingo的深度学习杂货店

Q125 Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric c...

3275
来自专栏待你如初见

Day10

1532
来自专栏前端知识分享

第190天:js---String常用属性和方法(最全)

1163
来自专栏Hongten

java中的List记录是否完全匹配方法

===================================================

1081
来自专栏闻道于事

Java之面向对象例子(一)

定义一个人类,给这个类定义一个从身份证获取生日的方法,输入身份证,获取出生年月日 //主方法 package com.hanqi.maya.model; imp...

3198
来自专栏Java帮帮-微信公众号-技术文章全总结

数据结构基础(2) --顺序查找 ; 二分查找

顺序查找 适用范围: 没有进行排序的数据序列 缺点: 速度非常慢, 效率为O(N) //实现 template <typename Type> Ty...

3296
来自专栏Android机器圈

递归 —— 二分查找法 —— 归并排序

二分法就是把一个数组折半查找,再折半直到找到数据位置,或者无数据位置。比如说1-100,你选的值是23,那么范围写法就是(索引写法类似)

1954
来自专栏武培轩的专栏

剑指Offer-二叉搜索树的后序遍历序列

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路 对于...

3365
来自专栏XAI

Java数组操作的10大方法

0、定义一个Java数组 String[] aArray = new String[5]; String[] bArray = {"a","b","c", "d...

2296
来自专栏Java帮帮-微信公众号-技术文章全总结

第十八天 集合-泛型&list接口&set接口【面试+工作】

泛型的使用:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。

1422

扫码关注云+社区

领取腾讯云代金券