金山辦公的服務端開發工程師-25屆春招筆試編程題

1.作弊

溪染:六王畢,四海一;蜀山兀,阿房出。覆壓三百余里,隔離天日。驪山北構而西折,直走咸陽。二川溶溶,流入宮墻。五步一樓,十步一閣;廊腰縵回,檐牙高啄;各抱地勢,鉤心斗角……

叁秋:還在背《阿房宮賦》啊。

溪染:(停下背書)明天就要測試了,難道不背?

叁秋:什么?明天要測試?我現在抱佛腳還來得及嘛?

溪染:也就十來篇文言文而已。哦,你比較笨,那估計來不及了

叁秋:(沉默幾秒)救救孩子吧!

溪染:我想想辦法,我把文言文先換成拼音,然后在考場用動作語言傳給你怎么樣?

叁秋:什么動作語言?

溪染:我們先規定一個規則好了,我用‘點頭’和‘搖頭’向你傳遞信息。

叁秋:然后呢?

溪染:比如用‘點頭-搖頭’代表‘a’,用‘點頭-點頭’代表‘b’。

叁秋:我知道了!‘c’就用‘點頭-點頭-點頭’表示

溪染:沒救了,你是真的傻!如果這樣,那我‘點頭-點頭-點頭-點頭-點頭-點頭’表示什么?

叁秋:‘bbb’可以,‘cc’也行!!

溪染:對的,這樣的規則就有歧義了,所以我們定義的任意2個規則,一個規則都不能是另一個的前綴,更不能相同!

叁秋:那這還不簡單!我‘a’用‘點頭-搖頭’表示,‘b’用‘點頭-點頭-搖頭’表示,‘c’用‘點頭-點頭-點頭-搖頭’表示,以此類推!

溪染:用你這個規則,我脖子可能就不在了!

溪染:我們應該找到一個規則,讓我‘點頭’and‘搖頭’的次數和最少,這樣的話即可以快速傳遞信息,被監考老師發現的幾率也小—些。

叁秋:那我們改怎么規定規則呢?

溪染:現在我們把文言文轉為拼音先

(過了一會兒)

溪染:我們已經知道到時候我該給你傳遞的信息了,我們稍加計算一下,就可以找到最好的規則了

叁秋:那怎么計算呢?

溪染:我都為你付出這么多了,怎么找到最好的規則就靠你自己了

(又過了一會兒)

叁秋實在不知道怎么計算,于是找到了你

輸入描述

一行字符串S,(1≤|S|≤5×10^6),表示需要傳達的信息,有可能是文言文拼音,S中僅包含小寫英文字母。

輸出描述

僅一行一個正整數表示問題的答案ans,表示傳達信息所需最少的‘點頭’and‘搖頭’的次數之和。

示例1

輸入

aaaaaa

輸出

6

說明

‘a’用‘點頭’代表即可

示例2

輸入

abcabc

輸出

10

說明

‘a’用‘點頭’代表 ‘b’用‘搖頭-點頭’代表 ‘c’用‘搖頭-搖頭’代表

示例3

輸入

havefuninthegame

輸出

54

說明

解釋那么長,這點地方夠嗎?

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.nextLine();int[] freq = new int[26]; // 統計每個小寫字母的頻率// 計算每個字符的出現頻率for (char c : s.toCharArray()) {freq[c - 'a']++;}// 收集所有非零頻率List<Integer> frequencies = new ArrayList<>();for (int count : freq) {if (count > 0) {frequencies.add(count);}}// 特殊情況:只有一種字符if (frequencies.size() == 1) {System.out.println(frequencies.get(0));return;}// 使用優先隊列(最小堆)構建哈夫曼樹PriorityQueue<Integer> minHeap = new PriorityQueue<>(frequencies);int totalActions = 0;// 合并節點直到堆中只剩一個節點while (minHeap.size() > 1) {int first = minHeap.poll();int second = minHeap.poll();int sum = first + second;totalActions += sum;minHeap.add(sum);}System.out.println(totalActions);}
}

2.牛牛的數組匹配

牛牛剛學會數組不久,他拿到兩個數組a和b,詢問b的哪一段連續子數組之和與數組a之和最接近。如果有多個子數組之和同樣接近,輸出起始點最靠左的數組。

輸入描述

第一行輸入兩個正整數n和m,表示數組a和b的長度。第二第三行輸入n個和m個正整數,表示數組中a和b的值。

輸出描述

輸出子數組之和最接近a的子數組。

示例1

輸入

2 6

30 39

15 29 42 1 44 1

輸出

29 42

示例 2

輸入

6 1

50 47 24 19 46 47

2

輸出

2

import java.util.*;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 讀取數組a和b的長度int n = scanner.nextInt();int m = scanner.nextInt();// 讀取數組a并計算其總和int[] a = new int[n];int sumA = 0;for (int i = 0; i < n; i++) {a[i] = scanner.nextInt();sumA += a[i];}// 讀取數組b并計算前綴和int[] b = new int[m];for (int i = 0; i < m; i++) {b[i] = scanner.nextInt();}// 計算前綴和,prefixSum[0] = 0, prefixSum[1] = b[0], prefixSum[2] = b[0]+b[1], etc.long[] prefixSum = new long[m + 1];for (int i = 0; i < m; i++) {prefixSum[i + 1] = prefixSum[i] + b[i];}int bestStart = 0;int bestEnd = 0;long minDiff = Long.MAX_VALUE;// 遍歷所有可能的起始位置for (int i = 0; i < m; i++) {// 目標值:sumA + prefixSum[i]long target = sumA + prefixSum[i];// 二分查找最接近目標值的結束位置int left = i + 1;int right = m;int j = i + 1;  // 默認結束位置while (left <= right) {int mid = left + (right - left) / 2;if (prefixSum[mid] == target) {j = mid;break;} else if (prefixSum[mid] < target) {j = mid;left = mid + 1;} else {right = mid - 1;}}// 檢查j和j+1兩個位置,找到更接近目標值的int candidates[] = {j, j + 1};for (int k : candidates) {if (k > m) continue;long currentSum = prefixSum[k] - prefixSum[i];long currentDiff = Math.abs(currentSum - sumA);// 更新最佳子數組if (currentDiff < minDiff ||(currentDiff == minDiff && i < bestStart)) {minDiff = currentDiff;bestStart = i;bestEnd = k - 1;  // 轉換為數組b的索引}}}// 輸出最佳子數組for (int i = bestStart; i <= bestEnd; i++) {System.out.print(b[i]);if (i < bestEnd) {System.out.print(" ");}}System.out.println();}
}

3.牛牛的四葉玫瑰數

牛牛最近學了水仙花數,但是他并不喜歡水仙花,因此他準備算出[l,r]區間內的四葉玫瑰數。

四葉玫瑰數:一個數的四個位置的數字的四次方加起來等于這個四位數本身的數。

輸入描述

第一行輸入兩個正整數l,r,表示閉區間的兩頭r<=10000

輸出描述

輸出區間內的四葉玫瑰數,保證至少有一個

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 讀取區間范圍int l = scanner.nextInt();int r = scanner.nextInt();scanner.close();// 遍歷區間內的每個數,檢查是否為四葉玫瑰數for (int num = l; num <= r; num++) {// 四葉玫瑰數一定是四位數if (num < 1000 || num > 9999) {continue;}// 分解數字的四個位int thousands = num / 1000;int hundreds = (num % 1000) / 100;int tens = (num % 100) / 10;int units = num % 10;// 計算四個位的四次方之和int sum = (int)(Math.pow(thousands, 4) + Math.pow(hundreds, 4) +Math.pow(tens, 4) + Math.pow(units, 4));// 檢查是否等于原數if (sum == num) {System.out.println(num);}}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/94084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/94084.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/94084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

注意力機制中為什么q與k^T相乘是注意力分數

要理解 “qkT\mathbf{q} \times \mathbf{k}^TqkT 是注意力分數”&#xff0c;核心是抓住注意力機制的本質目標 ——量化 “查詢&#xff08;q&#xff09;” 與 “鍵&#xff08;k&#xff09;” 之間的關聯程度&#xff0c;而向量點積&#xff08;矩陣相乘的元素本質&#xff…

Krea Video:Krea AI推出的AI視頻生成工具

本文轉載自&#xff1a;Krea Video&#xff1a;Krea AI推出的AI視頻生成工具 - Hello123工具導航 ** 一、平臺定位與技術特性 Krea Video 是 Krea AI 推出的 AI 視頻生成工具&#xff0c;通過結合關鍵幀圖像與文本提示實現精準視頻控制。用戶可自定義視頻首尾幀、為每張圖片設…

C++初階(2)C++入門基礎1

C是在C的基礎之上&#xff0c;容納進去了面向對象編程思想&#xff0c;并增加了許多有用的庫&#xff0c;以及編程范式 等。熟悉C語言之后&#xff0c;對C學習有一定的幫助。 本章節主要目標&#xff1a; 補充C語言語法的不足&#xff0c;以及C是如何對C語言設計不合理的地方…

ANSI終端色彩控制知識散播(II):封裝的層次(Python)——不同的邏輯“一樣”的預期

基礎高階各有色&#xff0c;本原純真動乾坤。 筆記模板由python腳本于2025-08-22 18:05:28創建&#xff0c;本篇筆記適合喜歡終端色彩ansi編碼和python的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值&#xff1a;在于輸出思考與經驗&#xff0c;而不僅僅是知識的簡單復述…

前端無感刷新 Token 的 Axios 封裝方案

在現代前端應用中&#xff0c;基于 Token 的身份驗證已成為主流方案。然而&#xff0c;Token 過期問題常常困擾開發者 —— 如何在不打斷用戶操作的情況下自動刷新 Token&#xff0c;實現 "無感刷新" 體驗&#xff1f;本文將詳細介紹基于 Axios 的解決方案。什么是無…

【數據結構】線性表——鏈表

這里寫自定義目錄標題線性表鏈表&#xff08;鏈式存儲&#xff09;單鏈表的定義單鏈表初始化不帶頭結點的單鏈表初始化帶頭結點的單鏈表初始化單鏈表的插入按位序插入帶頭結點不帶頭結點指定結點的后插操作指定結點的前插操作單鏈表的刪除按位序刪除&#xff08;帶頭結點&#…

容器安全實踐(三):信任、約定與“安全基線”鏡像庫

容器安全實踐&#xff08;一&#xff09;&#xff1a;概念篇 - 從“想當然”到“真相” 容器安全實踐&#xff08;二&#xff09;&#xff1a;實踐篇 - 從 Dockerfile 到 Pod 的權限深耕 在系列的前兩篇文章中&#xff0c;我們探討了容器安全的底層原理&#xff0c;并詳細闡述…

百度面試題:賽馬問題

題目現在有25匹馬和一個賽馬場&#xff0c;賽馬場有5條跑道&#xff08;即一次只能比較5匹馬&#xff09;&#xff0c;并且沒有秒表等計時工具&#xff0c;因此每次賽馬只能知道這5匹馬的相對時間而非絕對時間。問&#xff1a;如何篩選出跑的最快的3匹馬&#xff1f;需要比賽幾…

centos下安裝Nginx(搭建高可用集群)

CentOS-7下安裝Nginx的詳細過程_centos7安裝nginx-CSDN博客 centos換yum軟件管理包鏡像 CentOS 7.* 更換國內鏡像源完整指南_centos7更換國內源-CSDN博客 VMware虛擬機上CentOS配置nginx后,本機無法訪問 執行命令&#xff1a;/sbin/iptables -I INPUT -p tcp --dport 80 -j…

實時視頻技術選型深度解析:RTSP、RTMP 與 WebRTC 的邊界

引言&#xff1a;WebRTC 的“光環”與現實落差 在實時音視頻領域&#xff0c;WebRTC 常常被貼上“終極解決方案”的標簽&#xff1a;瀏覽器原生支持、無需插件、點對點傳輸、毫秒級延遲&#xff0c;這些特性讓它在媒體和開發者群體中擁有了近乎神話般的地位。許多人甚至認為&a…

基于深度學習的阿爾茨海默癥MRI圖像分類系統

基于深度學習的阿爾茨海默癥MRI圖像分類系統 項目概述 阿爾茨海默癥是一種進行性神經退行性疾病&#xff0c;早期診斷對于患者的治療和生活質量至關重要。本項目利用深度學習技術&#xff0c;基于MRI腦部掃描圖像&#xff0c;構建了一個高精度的阿爾茨海默癥分類系統&#xff0…

54 C++ 現代C++編程藝術3-移動構造函數

C 現代C編程藝術3-移動構造函數 文章目錄C 現代C編程藝術3-移動構造函數場景1&#xff1a;動態數組資源轉移 #include <iostream> #include <vector> class DynamicArray { int* data; size_t size; public: // 移動構造函數&#xff08;關鍵實現&#xf…

Sping Boot + RabbitMQ :如何在Spring Boot中整合RabbitMQ實現消息可靠投遞?

Spring Boot整合RabbitMQ實現消息可靠投遞全解析 在分布式系統中&#xff0c;消息中間件是解耦、異步、流量削峰的核心組件。RabbitMQ作為高可靠、易擴展的AMQP協議實現&#xff0c;被廣泛應用于企業級場景。但消息傳遞過程中可能因網絡波動、服務宕機等問題導致消息丟失&#…

STAR-CCM+|K-epsilon湍流模型溯源

【1】引言 三維CFD仿真經典軟件很多&#xff0c;我接觸過的有Ansys和STAR-CCM兩種。因為一些機緣&#xff0c;我使用STAR-CCM更多&#xff0c;今天就來回顧一下STAR-CCM中K-epsilon湍流模型的基本定義。 【2】學習地址介紹 點擊鏈接User Guide可以到達網頁版本的STAR-CCM 24…

osgEarth 圖像融合正片疊底

* 需求&#xff1a;* 高程渲染圖 RGB.tif、 山體陰影圖 AMP.tif** 高程渲染圖 rgb波段分別 乘以 山體陰影圖r波段&#xff0c; 然后除以255(AI說 讀取的紋理就已經歸一化到了 0~1 范圍&#xff0c;不用除以 255)。本人遙感知識匱乏。問了AI,以上 需求在許多商業軟件上已實現。…

Java接口響應速度優化

在 Java 開發中&#xff0c;接口響應速度直接影響用戶體驗和系統吞吐量。優化接口性能需要從代碼、數據庫、緩存、架構等多個維度綜合考量&#xff0c;以下是具體方案及詳細解析&#xff1a;一、代碼層面優化代碼是接口性能的基礎&#xff0c;低效的代碼會直接導致響應緩慢。1.…

A Large Scale Synthetic Graph Dataset Generation Framework的學習筆記

文章的簡介 作者提出了一個可擴展的合成圖生成框架&#xff0c;能夠從真實圖中學習結構和特征分布&#xff0c;并生成任意規模的圖數據集&#xff0c;支持&#xff1a; 節點和邊的結構生成節點和邊的特征生成特征與結構的對齊&#xff08;Aligner&#xff09; 它區別于GraphWor…

Android12 Framework讀寫prop屬性selinux報錯解決

文章目錄問題描述解決過程相關文章問題描述 Android讀prop值時&#xff0c;就算是system應用&#xff0c; 也需要selinux權限&#xff0c;否則會報錯。 java代碼如下 SystemProperties.get("ro.input.resampling", "")selinux報錯如下 2025-06-28 17:57:…

【圖文版】AIOT 小智 AI 聊天機器人 ESP32 項目源碼圖解

前言 小智 AI 聊天機器人是最近一個很火的開源項目&#xff0c;它借助LLM大模型以及TTS等AI的能力&#xff0c;通過自然語言來與其對話實現交互。它可以回答任何問題、播放音樂、背誦古詩&#xff0c;頗有未來AI機器人的雛形。 因為最近工作上的需要對其進行了研究&#xff0c;…

250821-RHEL9.4上Docker及Docker-Compose的離線安裝

在 離線環境下 在 RHEL (Red Hat Enterprise Linux) 系統上安裝 Docker 和 Docker Compose&#xff0c;需要提前在有網絡的環境中下載相關 RPM 包及依賴&#xff0c;然后在目標機器上進行安裝。以下是比較完整的步驟&#xff1a; 1. Docker及Docker-Compose離線安裝 在 RHEL 9.…