我试图扭转一个列表.
以下是我的代码:
reverseList :: [Int] -> [Int]
reverseList [] = []
reverseList (x:xs) = x:reverseList xs
Run Code Online (Sandbox Code Playgroud)
最终发生的事情是我最终以相同的顺序返回列表.我甚至有一个如何扭转列表的解决方案,但我想知道我在这里做错了什么?我对haskell很新,所以我认为我应该专注于理解更多,然后我可以轻松解决更多问题.我知道有很多解决方案可以解决这个问题,但我需要更多的帮助来理解我在这段代码中做错了什么.
我试图大多理解Big O和Omega在堆中插入新元素背后的原因.我知道我可以在网上找到答案,但我真的很想透彻理解,而不仅仅是在网上找到答案而只是盲目地记忆.
例如,如果我们有以下堆(以数组格式表示)
[8,6,7,3,5,3,4,1,2]
Run Code Online (Sandbox Code Playgroud)
如果我们决定插入一个新元素"4",我们的数组现在看起来就像这样
[8,6,7,3,5,3,4,1,2,4]
Run Code Online (Sandbox Code Playgroud)
它将被放置在索引9中,因为这是第0个基于索引的数组,其父级将是索引4,即元素5.在这种情况下,我们不需要做任何事情,因为4 <5并且它不违反二进制堆属性.最好的情况是OMEGA(1).
但是,如果我们插入的新元素是100,那么我们必须调用运行时间为O(log n)的max-heapify函数,因此在最坏的情况下,在堆中插入一个新元素需要O(log n).
如果我错了,有人可以纠正我,因为我不确定我的理解或推理是否是100%?
我有一个名为apple的类,包含3个值int x,int y和int weight.然后我创建了一个苹果类型对象的数组.现在我想根据权重对对象数组进行排序,这意味着具有最低权重的苹果对象应该是第一个,依此类推.
我知道有很多方法可以通过使用Arrays.sort等或比较器来实现这一点.
我想知道在Java中这种方法的最快方法是什么?可能有一个案例,我有500,000个对象,所以我想知道我应该使用哪种,更重要的是哪种方法会给我最好的方法.我甚至用Hoare分区编写了自己的快速排序.
Apple类的代码
public class Apple {
public int x;
public int y;
public int weight;
public Apple(int a, int b, int w) {
x = a;
y = b;
weight = w;
}
}
Run Code Online (Sandbox Code Playgroud)
主类代码
public class main {
static Apple[] appleArray;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int totalApples = sc.nextInt();
appleArray = new Edge[totalApples];
int x = 10; …Run Code Online (Sandbox Code Playgroud) 我有一个散点图充电,我想改变点的大小,使它们看起来像气泡.有人能告诉我如何改变泡泡的大小吗?
这是我的代码:
var chart = c3.generate({
data: {
xs: {
IBM: 'ibm_x',
Microsoft: 'microsoft_x',
},
columns: [
["ibm_x", 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.4, 3.0, 3.0, 4.0, 4.4, 3.9, 3.5, 3.8, 3.8, 3.4, 3.7, 3.6, 3.3, 3.4, 3.0, 3.4, 3.5, 3.4, 3.2, 3.1, 3.4, 4.1, 4.2, 3.1, 3.2, 3.5, 3.6, 3.0, 3.4, 3.5, 2.3, 3.2, 3.5, 3.8, 3.0, 3.8, 3.2, 3.7, 3.3],
["microsoft_x", 3.2, 3.2, 3.1, 2.3, 2.8, 2.8, 3.3, 2.4, 2.9, 2.7, 2.0, …Run Code Online (Sandbox Code Playgroud) 我目前正在使用itext-pdf生成PDF.除此之外,我还使用JFreeChart在其上创建图表.我创建了一个爆炸效果的圆环图,它看起来像这样.
但是我想创建一个看起来更像这样的圆环图.
我希望某些作品脱颖而出,但不能完全脱离甜甜圈图表.我非常感谢如何实现这一目标.
这是我目前的代码:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Locale;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlotState;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleInsets;
import com.itextpdf.awt.DefaultFontMapper;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfTemplate;
import com.itextpdf.text.pdf.PdfWriter;
public class RingChartTest {
public static void main(String[] args) throws Exception {
new RingChartTest().createPDF();
}
private void createPDF() …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的应用程序,让你创建形状并用线连接它们.为此,您将执行以下操作.
Example
1. Click new animation
2. add rectangle
3. add child
4. add circle
Run Code Online (Sandbox Code Playgroud)
您可以移动形状,拖动和调整大小.我想知道是否可以在两个对象之间添加动画.因此,例如,一个小的圆形圆球将在两个物体之间的线上生成动画.我已经在结构js的动画页面上检查了演示,但不确定是否可以从对象b进行.
这是FIDDLE.
我Chart.js用来创建一个只有两行和两组数据的简单条形图.我是使用该库的新手,在阅读完这些示例之后,我对大多数事情感到满意.这是我到目前为止所拥有的
图表的JS代码:
var helpers = Chart.helpers;
var canvas = document.getElementById('bar');
var barChartData = {
labels: ["IBM", "Microsoft"],
datasets: [{
label: "Product A",
fillColor: "rgba(220,220,220,0.5)",
strokeColor: "rgba(220,220,220,0.8)",
data: [25, 75]
}, {
label: "Product B",
fillColor: "rgba(151,187,205,0.5)",
strokeColor: "rgba(151,187,205,0.8)",
data: [75, 25]
}]
}
//
var bar = new Chart(canvas.getContext('2d')).Bar(barChartData, {
tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>kb",
animation: false,
})
;
Run Code Online (Sandbox Code Playgroud)
现在,我想知道如果在不刷新页面的情况下实时更改数据是否可以更新此图表.例如,如果每秒数据值保持交换或随机发生,则图表应反映更改.我已经搜索了很多,但没有找到适当的文档或教程解释这个,如果有人能告诉我如何做这件事,我将非常感激.
这是我迄今为止为工作创建的FIDDLE.
我目前有一个画布应用程序,我可以在其中添加对象(形状)。这是我的小提琴。您基本上单击将初始化画布的新模拟,然后您可以添加一个圆形或矩形。
我正在尝试添加一个名为“添加子项”的功能,您可以在其中单击某个对象(形状),然后单击添加子项并添加另一个对象(形状),它们都与一条线链接。类似于这个DEMO 的东西。
我认为此功能的伪代码如下所示:
function addChild(){
get getActiveObject
draw a line/arrow connect it with getActiveObject
draw object connected with line
should be able to move it / strecth it around
}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否可能以及如何开始。请指教。

我基本上是在处理以下问题,我试图改变插入排序,以便它也可以删除它计数器的重复项。下面是插入排序。
public void insertSort() {
for (int i = 1; i < nElems; i++) {
int temp = a[i];
int j = i;
while (j > 0 && temp <= a[j - 1]) {
a[j] = a[j - 1];
j--;
}
a[j] = temp;
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定我是否正确理解了该方法。如果我理解正确(请告诉我我是否错了),该方法建议我应该在内部 while 循环开始之前遍历整个数组,并使用任意数字(例如 -1)标记任何重复项。然后当内部 while 循环开始时,它将整理数组,所有重复项将在开始时堆叠在一起。
如果是这种情况,那么我可以在插入排序开始之前简单地将数组中的每个元素相互比较,并标记任何重复项 - 1,然后插入排序将处理排序部分。之后我可以减少arraySize。
但是我觉得我没有正确理解它,所以有人可以就此提出任何建议吗?
我有一小段代码,会要求用户输入诸如
5
12
59
58
28
58
Run Code Online (Sandbox Code Playgroud)
第一个数字将指示我需要创建的数组的大小,其余数字将存储在该数组中。因此,对于给定的输入,将创建一个大小为 5 的数组,并且后面的数字将存储在该数组中。
我的代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int[] array = new int[size];
for(int i =0; i<size; i++)
{
array[i] = sc.nextInt();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以只提供文本文件而不是手动输入数字。我的意思是知道有多种方法可以读取文本文件,但是有没有一种方法可以在命令行中输入它。我知道在 c 中有一些简单的命令,你只需输入类似的命令即可工作 - >./code.out > input.txt
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int age;
printf("What is your age?: ");
scanf("%d ", &age);
printf("your age is %d", age);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我只是学习一些基本的c编程并且有一个小问题.当我编译并运行此代码时,我的控制台屏幕将提示我我的年龄,我键入一些数字,然后按Enter键,没有任何反应.然后,只有当我点击键盘上的任何其他字母时,我的年龄才能通过最后的陈述打印出来 我想知道这是怎么发生的,我该如何防止这种情况发生?我希望能够输入我的年龄,并在输入我的年龄后按下输入后立即显示.
我是C的新手,一小时前刚开始搞乱它,所以如果这是一个糟糕的问题,请原谅.
我正在写一个小函数重复k lt.它将重复列表中的所有元素k次.
这是我的方法,以下是我试过的代码
repeat 0 xs = xs
repeat k [] = []
repeat k (x:xs)
|k == 1 = x:repeat 0 xs
|otherwise = x:repeat (k-1) xs
Run Code Online (Sandbox Code Playgroud)
然后我意识到我只是将头部移开并将其推回内部.所以我使用 ++运营商?我知道有其他方法可以解决这个问题,但我想学习如何递归,因为它可以通过使用列表推导轻松完成.
请指教.