数组倒排

这是一道面试题,要求在不使用Java内置函数的情况下,对数组的指定索引范围进行倒序排列。例如,给定数组int[] array = {1,3,5,8,10,4,7,6},将索引1到4的部分倒序,得到1,10,8,5,3,4,7,6。提供的代码实现了这一功能,并欢迎有更好解决方案的同学分享。" 132748532,7337247,使用Hibernate Validator与PostgreSQL防止SQL注入,"['开发语言', '编程实践', '架构设计', '数据库理论', '安全']
摘要由CSDN通过智能技术生成

前几天碰到一个面试题,具体需求是这样的,给出一个数组int[] array = new int[]{1,3,5,8,10,4,7,6};要求指定索引起始位置和结束位置,把索引范围内的进行倒序排序,比如:索引为1和4,那么要求输出,1,10,8,5,3,4,7,6,不可以使用java已有的函数,那么只能是遍历了。具体代码如下:

public class ArraySort {
    public static void main(String[] args) {
        int[] array = new int[8];
        array[0] = 1;
        array[1] = 3;
        array[2] = 5;
        array[3] = 8;
        array[4] = 10;
        array[5] = 4;
        array[6] = 7;
        array[7] = 6;

        int begin = 1;
        int end = 4;

        reverseByIndex(array,begin,end);

    }

    public static void reverseByIndex(int[] array,int begin,int end){
        if (end >= array.length || begin > end) {
            throw new IllegalArgumentException();
        }
        int[] res = new int[array.length];
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
倒排索引(Inverted Index)是一种常见的文本索引方法,它将文档中出现的词汇按照字典序排序,然后将每个单词出现的文档列表存储在索引中。当用户查询某个单词时,系统会搜索该单词在索引中的文档列表,以快速定位相关文档。 下面是一个简单的倒排索引的 Java 实现: ``` import java.util.*; public class InvertedIndex { private Map<String, List<Integer>> index = new HashMap<>(); public void addDocument(int docId, String content) { String[] words = content.split("\\s+"); for (String word : words) { List<Integer> docIds = index.getOrDefault(word, new ArrayList<>()); docIds.add(docId); index.put(word, docIds); } } public List<Integer> search(String query) { return index.getOrDefault(query, Collections.emptyList()); } } ``` 在这个实现中,`addDocument` 方法用于将文档添加到索引中,`search` 方法用于根据查询词查找对应的文档列表。索引使用了一个 `Map` 来存储单词和文档列表之间的映射关系,其中键是单词,值是包含该单词的文档编号的列表。`addDocument` 方法首先将文档内容按照空格分隔成单词数组,然后遍历每个单词,将其加入索引中。如果单词已经在索引中存在,就将当前文档编号加入到对应的文档列表中;否则,就创建一个新的文档列表,并将其加入到索引中。`search` 方法直接返回对应查询词的文档列表,如果该单词没有在索引中出现过,则返回一个空列表。 这只是一个简单的倒排索引实现,实际应用中还需要考虑一些复杂的情况,比如如何处理停用词、如何处理同义词、如何计算文档之间的相似度等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值