微众银行笔试

<html> <head></head> <body> <div class="content ql-editor"> <h1>第一题</h1> <p><br></p> <p><strong>题目描述:</strong></p> <p>小美想要买糖果店的一根长长的糖果,糖果店顾客可以从中选取一个位置然后老板会在那切断,糖果前端到那个切断位置的糖果就会出售给这位顾客。这个糖果其实不同段有着不同的口味,小美希望她选出来的糖果中各个段有着不同的口味,在这基础上希望能选出尽可能长的糖果。小美想知道她能买到最长多长的糖果,请你帮帮她。</p> <p><strong>输入描述</strong></p> <p>第一行1个整数n,表示糖果的长度。</p> <p>第二行n个整数<a href="http://a1a2...an" target="_blank">a1a2...an</a>,其中ai表示从糖果前端开始第i段的口味,每段均1为单位长度。</p> <p>对于100%的数据,1&lt;=n&lt;=50000,1&lt;=ai&lt;=50000</p> <p><strong>输出描述</strong></p> <p>输出一行一个整数表示能买到的糖果的最长长度,且其中不包含相同口味.</p> <p><br></p> <p><strong>样例输入</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 5 </div> <div class="ql-code-block"> 1&nbsp;2&nbsp;3&nbsp;3&nbsp;4 </div> </div> <p><strong>样例输出</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 3 </div> </div> <p><br></p> <p><strong>提示</strong></p> <p>如果我们买长度为4的糖果,包含的口味为[1,2,3,3],存在了重复。</p> <p>而长度为3时,包含的口味为[1,2,3],不存在重复。因此长度3为最长的不存在重复口味糖果长度。</p> <p><br></p> <p>思路:哈希解法去重即可,理解清楚题目,不要被绕进去就行,可能会理解错成滑动窗口题目</p> <p><br></p> <div class="ql-code-block-container"> <div class="ql-code-block"><span class="ql-token hljs-keyword">public</span> <span class="ql-token hljs-keyword">static</span> <span class="ql-token hljs-keyword">void</span> <span class="ql-token hljs-title">main(String[] args)</span> { </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//1.不同段有不同的口味</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//2.选尽可能长的糖果</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//3.最多能买多长的糖果(价格最优,口味不能重复)</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-type">Scanner</span> <span class="ql-token hljs-variable">sc</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">Scanner</span>(System.in); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">arrayLength</span> <span class="ql-token hljs-operator">=</span> sc.nextInt(); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">i</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> [] array = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">int</span>[arrayLength]; </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">while</span> (i&lt;arrayLength){ </div> <div class="ql-code-block"> array[i] = sc.nextInt(); </div> <div class="ql-code-block"> i++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> maxLength=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> Map&lt;Integer,Boolean&gt; map = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">HashMap</span>&lt;&gt;(); </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">for</span> (<span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">j</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; j &lt; array.length; j++) { </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">if</span> (!map.containsKey(array[j])) { </div> <div class="ql-code-block"> map.put(array[j],<span class="ql-token hljs-literal">true</span>); </div> <div class="ql-code-block"> maxLength++; </div> <div class="ql-code-block"> }<span class="ql-token hljs-keyword">else</span> { </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">break</span>; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> System.out.println(maxLength); </div> <div class="ql-code-block"> } </div> </div> <p><br></p> <p><br></p> <h1>第二题</h1> <p><br></p> <p><strong>题目描述:</strong></p> <p>酷酷的小明准备和小伙伴们展示他捏出来的超酷的橡皮泥士兵。在展示之前,小明发现有些橡皮泥士兵大小十分相似甚至相同,这让小明感觉不是很酷,因为小明想要他的橡皮泥作品都有自己的风格,即使是大小也要有区别。小明的n个橡皮泥士兵的大小分别为a1,<a href="http://a2...an" target="_blank">a2...an</a>,小明可以通过给某个士兵加一单位皮泥来使得其大小增加一单位。小明想知道如果他想要让所有的橡皮泥士兵大小都不相同,至少需要一共加多少单位橡皮泥。</p> <p><strong>输入描述</strong></p> <p>第一行1个整数n,表示小明的橡皮泥士兵数量.</p> <p>第二行n个整数<a href="http://a1a2...an" target="_blank">a1a2...an</a>,分别表示小明的橡皮泥士兵的大小。</p> <p>对于100%的数据,1&lt;=n&lt;=50000,1&lt;=ai&lt;=100000</p> <p><strong>输出描述</strong></p> <p>输出一行一个整数表示总共至少加多少单位的橡皮泥.</p> <p><strong>样例输入</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 5 </div> <div class="ql-code-block"> 1&nbsp;1&nbsp;2&nbsp;3&nbsp;3 </div> </div> <p><strong>样例输出</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 5 </div> </div> <p><strong>提示</strong></p> <p>我们给一个大小为1的橡皮泥士兵增加4单位像皮泥,大小变为5;</p> <p>再给一个大小为3的橡皮泥士兵增加1单位像皮泥,大小变为4。</p> <p>此时橡皮泥士兵们的大小分别为1、2、3、4、5,没有两个橡皮泥士兵拥有相同大小了。</p> <p>可以证明没有更优方案。</p> <p><br></p> <p>思路:同样是哈希思想,把重复的橡皮泥士兵单独拿出来累加橡皮泥单位,然后统计次数即可</p> <p><br></p> <div class="ql-code-block-container"> <div class="ql-code-block"><span class="ql-token hljs-keyword">public</span> <span class="ql-token hljs-keyword">static</span> <span class="ql-token hljs-keyword">void</span> <span class="ql-token hljs-title">main(String[] args)</span> { </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//1.通过给所有橡皮泥士兵加单位橡皮泥从而实现不同橡皮泥不同的风格</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//2.至少需要加多少单位橡皮泥才能实现这个目标</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-type">Scanner</span> <span class="ql-token hljs-variable">sc</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">Scanner</span>(System.in); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">arrayLength</span> <span class="ql-token hljs-operator">=</span> sc.nextInt(); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">i</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> [] array = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">int</span>[arrayLength]; </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">while</span> (i&lt;arrayLength){ </div> <div class="ql-code-block"> array[i] = sc.nextInt(); </div> <div class="ql-code-block"> i++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//通过Map获取重复大小的橡皮泥,重复大小的橡皮泥就是要变化大小的橡皮泥</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> mixNum=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> List&lt;Integer&gt; list = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">ArrayList</span>&lt;&gt;(); </div> <div class="ql-code-block"> Map&lt;Integer,Boolean&gt; map = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">HashMap</span>&lt;&gt;(); </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">for</span> (<span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">j</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; j &lt; array.length; j++) { </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">if</span> (map.containsKey(array[j])){ </div> <div class="ql-code-block"> list.add(array[j]); </div> <div class="ql-code-block"> }<span class="ql-token hljs-keyword">else</span> { </div> <div class="ql-code-block"> map.put(array[j],<span class="ql-token hljs-literal">true</span>); </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">for</span> (<span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">k</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; k &lt; list.size(); k++) { </div> <div class="ql-code-block"> <span class="ql-token hljs-type">Integer</span> <span class="ql-token hljs-variable">item</span> <span class="ql-token hljs-operator">=</span> list.get(k); </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">while</span> (map.containsKey(item)){ </div> <div class="ql-code-block"> item = item+<span class="ql-token hljs-number">1</span>; </div> <div class="ql-code-block"> mixNum++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//已经累加到不重复的橡皮泥要加入到map集合中</span> </div> <div class="ql-code-block"> map.put(item,<span class="ql-token hljs-literal">true</span>); </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> System.out.println(mixNum); </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> } </div> </div> <p><br></p> <h1>第三题</h1> <p><br></p> <p><strong>题目描述:</strong></p> <p>小明有一个数组。他挑选了一个有理数u/v,现在他想知道这个数组有多少个子区间的平均值恰好等于u/v。数组的子区间即是数组中连续的一段区间,如数组[4,2,6]有6个子区间[4],[2],[6],[4,2],[2,6],[4,2,6]。</p> <p><strong>输入描述</strong></p> <p>第一行有三个整数n,u,v(1&lt;=n,v&lt;=100000,1&lt;=u&lt;=n*v),代表数组的长度,小明选择的有理数的分子和分母。输入保证u和v的最大公因数是1,即u/v是最简分数。</p> <p>第二行有n个绝对值不超过1000000的整数,代表数组中的元素。</p> <p>数字间两两有空格阳开。</p> <p><strong>输出描述</strong></p> <p>输出一个非负整数,代表所求的答案</p> <p><strong>样例输入</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 6&nbsp;5&nbsp;2 </div> <div class="ql-code-block"> 2&nbsp;4&nbsp;1&nbsp;3&nbsp;2&nbsp;3 </div> </div> <p><strong>样例输出</strong></p> <div class="ql-code-block-container"> <div class="ql-code-block"> 6 </div> </div> <p><br></p> <p>思路:暴力获取所有连续子区间,然后子区间内部累加判断,但不知道为什么AC率只有18%,有木有懂哥指点一下</p> <p><br></p> <p>我的代码</p> <div class="ql-code-block-container"> <div class="ql-code-block"><span class="ql-token hljs-keyword">public</span> <span class="ql-token hljs-keyword">static</span> <span class="ql-token hljs-keyword">void</span> <span class="ql-token hljs-title">main(String[] args)</span> { </div> <div class="ql-code-block"> <span class="ql-token hljs-type">Scanner</span> <span class="ql-token hljs-variable">sc</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">Scanner</span>(System.in); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">arrayLength</span> <span class="ql-token hljs-operator">=</span> sc.nextInt(); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">double</span> <span class="ql-token hljs-variable">u</span> <span class="ql-token hljs-operator">=</span> sc.nextDouble(); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">double</span> <span class="ql-token hljs-variable">v</span> <span class="ql-token hljs-operator">=</span> sc.nextDouble(); </div> <div class="ql-code-block"> <span class="ql-token hljs-type">double</span> <span class="ql-token hljs-variable">result</span> <span class="ql-token hljs-operator">=</span> u/v; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">i</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> [] array = <span class="ql-token hljs-keyword">new</span> <span class="ql-token hljs-title">int</span>[arrayLength]; </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">while</span> (i&lt;arrayLength){ </div> <div class="ql-code-block"> array[i] = sc.nextInt(); </div> <div class="ql-code-block"> i++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> <span class="ql-token hljs-type">double</span> numLength=<span class="ql-token hljs-number">1</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">double</span> sum=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> record=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//暴力获取所有连续子区间,子区间的长度为1开始,逐渐累加到数组的长度</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">for</span> (<span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">j</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; j &lt; array.length &amp;&amp; numLength&lt;=array.length; j++) { </div> <div class="ql-code-block"> <span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">num</span> <span class="ql-token hljs-operator">=</span> <span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">for</span> (<span class="ql-token hljs-type">int</span> <span class="ql-token hljs-variable">k</span> <span class="ql-token hljs-operator">=0</span>; k &lt; array.length; k++) { </div> <div class="ql-code-block"> sum = sum+array[k]; </div> <div class="ql-code-block"> num++; </div> <div class="ql-code-block"> <span class="ql-token hljs-comment">//拼凑出一个子区间则计算其平均值</span> </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">if</span> (num == numLength){ </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">if</span> (sum/numLength == result){ </div> <div class="ql-code-block"> record++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> num=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> sum = <span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> <span class="ql-token hljs-keyword">if</span> (numLength&gt;=<span class="ql-token hljs-number">2</span>){ </div> <div class="ql-code-block"> k--; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"> sum=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> j=<span class="ql-token hljs-number">0</span>; </div> <div class="ql-code-block"> numLength++; </div> <div class="ql-code-block"> } </div> <div class="ql-code-block"><br> </div> <div class="ql-code-block"> System.out.println(record); </div> <div class="ql-code-block"> } </div> </div> <p><br></p> </div> </body> </html>

下载 APP